protected override async Task <Result> ExecuteJobAsync(ScriptJob job, CancellationToken ct = default) { // Script vars are just wrappers over dictionaries for better performance. var vars = new EventScriptVars { Event = job.Event }; var result = await scriptEngine.ExecuteAsync(vars, job.Script, ct : ct); return(Result.Success(result?.ToString())); }
public static bool ShouldDelete(this EnrichedEvent @event, IScriptEngine scriptEngine, string expression) { if (!string.IsNullOrWhiteSpace(expression)) { // Script vars are just wrappers over dictionaries for better performance. var vars = new EventScriptVars { Event = @event }; return(scriptEngine.Evaluate(vars, expression)); } return(IsContentDeletion(@event) || IsAssetDeletion(@event)); }
private bool MatchsCondition(ContentChangedTriggerSchemaV2 schema, EnrichedSchemaEventBase @event) { if (string.IsNullOrWhiteSpace(schema.Condition)) { return(true); } // Script vars are just wrappers over dictionaries for better performance. var vars = new EventScriptVars { Event = @event }; return(scriptEngine.Evaluate(vars, schema.Condition)); }
public async ValueTask <string?> FormatAsync(string text, EnrichedEvent @event) { if (string.IsNullOrWhiteSpace(text)) { return(text); } if (TryGetTemplate(text.Trim(), out var template)) { var vars = new TemplateVars { ["event"] = @event }; return(await templateEngine.RenderAsync(template, vars)); } if (TryGetScript(text.Trim(), out var script)) { // Script vars are just wrappers over dictionaries for better performance. var vars = new EventScriptVars { Event = @event, AppId = @event.AppId.Id, AppName = @event.AppId.Name, User = Admin() }; var result = (await scriptEngine.ExecuteAsync(vars, script)).ToString(); if (result == "undefined") { return(GlobalFallback); } return(result); } var parts = BuildParts(text, @event); if (parts.Any(x => !x.Var.IsCompleted)) { await ValueTaskEx.WhenAll(parts.Select(x => x.Var)); } return(CombineParts(text, parts)); }
public bool Trigger(EnrichedEvent @event, RuleContext context) { var trigger = (CommentTrigger)context.Rule.Trigger; if (string.IsNullOrWhiteSpace(trigger.Condition)) { return(true); } // Script vars are just wrappers over dictionaries for better performance. var vars = new EventScriptVars { Event = @event }; return(scriptEngine.Evaluate(vars, trigger.Condition)); }