Example #1
0
 public RulesController(ICommandBus commandBus,
                        IRuleEventRepository ruleEventsRepository,
                        IRuleQueryService ruleQuery,
                        IRuleRunnerService ruleRunnerService,
                        RuleRegistry ruleRegistry)
     : base(commandBus)
 {
     this.ruleEventsRepository = ruleEventsRepository;
     this.ruleQuery            = ruleQuery;
     this.ruleRunnerService    = ruleRunnerService;
     this.ruleRegistry         = ruleRegistry;
 }
Example #2
0
        public static RuleDto FromRule(IEnrichedRuleEntity rule, bool canRun, IRuleRunnerService ruleRunnerService, Resources resources)
        {
            var result = new RuleDto();

            SimpleMapper.Map(rule, result);
            SimpleMapper.Map(rule.RuleDef, result);

            if (rule.RuleDef.Trigger != null)
            {
                result.Trigger = RuleTriggerDtoFactory.Create(rule.RuleDef.Trigger);
            }

            return(result.CreateLinks(resources, rule, canRun, ruleRunnerService));
        }
Example #3
0
 public RulesController(ICommandBus commandBus,
                        IRuleEventRepository ruleEventsRepository,
                        IRuleQueryService ruleQuery,
                        IRuleRunnerService ruleRunnerService,
                        RuleRegistry ruleRegistry,
                        EventJsonSchemaGenerator eventJsonSchemaGenerator)
     : base(commandBus)
 {
     this.ruleEventsRepository     = ruleEventsRepository;
     this.ruleQuery                = ruleQuery;
     this.ruleRunnerService        = ruleRunnerService;
     this.ruleRegistry             = ruleRegistry;
     this.eventJsonSchemaGenerator = eventJsonSchemaGenerator;
 }
Example #4
0
        public LinkVerifierService(string repositoryPath, string readmeRelativePath = null)
        {
            var repository = new FileRepository(repositoryPath);

            readmeRelativePath = readmeRelativePath ?? README_DEFAILT_PATH;
            var readmeFilePath = Path.Combine(repository.GetRepositoryPath(), readmeRelativePath);

            readmeFile = new CodeSampleRemoverReadmeFile(new ReadmeFile(readmeFilePath, readmeRelativePath));
            var rules = new List <ILinkRule>
            {
                new RepositoryLinkRule(repository, readmeFile),
                new ReadmeFileLinkRules(readmeFile.GetAllText())
            };

            if (Utils.IsInternetConnected())
            {
                rules.Add(new InternetLinkRule());
            }

            ruleRunner = new RuleRunner(rules);
        }
Example #5
0
        private RuleDto CreateLinks(Resources resources, IEnrichedRuleEntity rule, bool canRun, IRuleRunnerService ruleRunnerService)
        {
            var values = new { app = resources.App, id = Id };

            if (resources.CanDisableRule)
            {
                if (IsEnabled)
                {
                    AddPutLink("disable", resources.Url <RulesController>(x => nameof(x.DisableRule), values));
                }
                else
                {
                    AddPutLink("enable", resources.Url <RulesController>(x => nameof(x.EnableRule), values));
                }
            }

            if (resources.CanUpdateRule)
            {
                AddPutLink("update", resources.Url <RulesController>(x => nameof(x.PutRule), values));
            }

            if (resources.CanReadRuleEvents)
            {
                AddPutLink("trigger", resources.Url <RulesController>(x => nameof(x.TriggerRule), values));

                if (canRun && ruleRunnerService.CanRunRule(rule))
                {
                    AddPutLink("run", resources.Url <RulesController>(x => nameof(x.PutRuleRun), values));
                }

                if (canRun && ruleRunnerService.CanRunFromSnapshots(rule))
                {
                    var snaphshotValues = new { values.app, values.id, fromSnapshots = true };

                    AddPutLink("run/snapshots", resources.Url <RulesController>(x => nameof(x.PutRuleRun), snaphshotValues));
                }

                AddGetLink("logs", resources.Url <RulesController>(x => nameof(x.GetEvents), values));
            }

            if (resources.CanDeleteRule)
            {
                AddDeleteLink("delete", resources.Url <RulesController>(x => nameof(x.DeleteRule), values));
            }

            return(this);
        }
Example #6
0
        public static async Task <RulesDto> FromRulesAsync(IEnumerable <IEnrichedRuleEntity> items, IRuleRunnerService ruleRunnerService, Resources resources)
        {
            var runningRuleId = await ruleRunnerService.GetRunningRuleIdAsync(resources.Context.App.Id);

            var result = new RulesDto
            {
                Items = items.Select(x => RuleDto.FromRule(x, runningRuleId == null, ruleRunnerService, resources)).ToArray()
            };

            result.RunningRuleId = runningRuleId;

            return(result.CreateLinks(resources, runningRuleId));
        }