Esempio n. 1
0
        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()));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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));
        }