示例#1
0
        public async Task <List <IJob> > GetJobs()
        {
            var rules = new List <ArtifactRule>();

            foreach (var ruleString in PathRules.Split('\n'))
            {
                if (string.IsNullOrEmpty(ruleString.Trim()))
                {
                    continue;
                }
                rules.Add(new ArtifactRule(Condition, RepoUrl, ruleString));
            }

            var jobs      = new List <IJob>();
            var artifacts = await((TeamCityApi)Server).GetArtifactsAsync(this);

            foreach (var file in artifacts)
            {
                foreach (var rule in rules)
                {
                    var jobsForThisRule = rule.GetJobs(file.ToString());
                    if (jobsForThisRule != null)
                    {
                        jobs.AddRange(jobsForThisRule);
                    }
                }
            }
            return(jobs);
        }
示例#2
0
        private void GetPageRules()
        {
            if (_expiryRules == null)
            {
                return;
            }

            var pageRules = _expiryRules.Children("pageExpiryRule");

            if (pageRules == null)
            {
                return;
            }
            foreach (var pageRule in pageRules)
            {
                var pages = pageRule.GetPropertyValue <IEnumerable <IPublishedContent> >("pages");
                foreach (var page in pages)
                {
                    var rule = new PathExpiryRule()
                    {
                        Path = page.Url, ApplyToDescendantPages = pageRule.GetPropertyValue <bool>("applyToDescendantPages")
                    };

                    if (PathRules.FirstOrDefault(alreadyAdded => alreadyAdded.Path == rule.Path && alreadyAdded.ApplyToDescendantPages == rule.ApplyToDescendantPages) == null)
                    {
                        var months     = pageRule.GetPropertyValue <int>("months");
                        var days       = pageRule.GetPropertyValue <int>("days");
                        var forceNever = pageRule.GetPropertyValue <bool>("forcePagesToNeverExpire");

                        if ((months > 0 || days > 0) && !forceNever)
                        {
                            var baseDate       = DateTime.UtcNow;
                            var basePlusExpiry = baseDate.AddMonths(months).AddDays(days);
                            rule.MaximumExpiry = basePlusExpiry.Subtract(baseDate);
                        }

                        PathRules.Add(rule);
                    }
                }
            }
        }
 public void Reset()
 {
     UserAgents.Clear();
     PathRules.Clear();
     CrawlDelay = null;
 }