public async Task <List <CruiseControlBuild> > GetBuilds(string projectName, int limit = Connector.MaxSnapshots)
        {
            var history = new List <CruiseControlBuild>();

            var projectReportUrl = UrlHelper.GetAllBuildsUrl(this.baseUrl, projectName);

            using (var client = new WebClient())
            {
                var html = client.DownloadString(projectReportUrl);
                var doc  = new HtmlDocument();
                doc.LoadHtml(html);
                var recentBuilds = doc.DocumentNode.SelectNodes("//table[@class='RecentBuildsPanel']/tr/td/a[@class]");
                foreach (var b in recentBuilds.Take(limit))
                {
                    var authority = new Uri(projectReportUrl).GetLeftPart(System.UriPartial.Authority);
                    var build     = CruiseControlBuild.FromHtmlNode(b, authority);
                    if (build == null)
                    {
                        continue;
                    }

                    history.Add(build);
                }
            }

            return(history);
        }
Пример #2
0
        private static Status CreateStatus(CruiseControlBuild build)
        {
            var result = new CruiseControlStatus();

            result.Building    = false;
            result.BuildNumber = build.BuildNumber;
            result.Details     = build.BuildLabel;
            result.Url         = build.Url;
            result.Label       = build.BuildLabel;
            result.Time        = build.BuildTime;
            result.State       = CcStatusToObservationStatus(build.Status);
            result.Name        = build.Name;
            return(result);
        }