public async Task <CruiseControlJob> GetProjectStatus(CancellationToken cancellationToken, string projectName, int interval) { var pollInterval = new TimeSpan(0, 0, 0, interval, 0); if (DateTime.Now - this.lastPolled > pollInterval) { log.Trace("Polling server {@server}", new { Address = this.ReportUrl, LastPolled = this.lastPolled, CallingProject = projectName }); this.lastPolled = DateTime.Now; this.cache = await this.GetStatusAsync <CruiseControlJobs>(cancellationToken, this.ReportUrl); } log.Trace("Retrieving value from cache for project {projectName}", projectName); return(this.cache?.CruiseControlProject?.FirstOrDefault(job => job.Name == projectName)); }
/// <summary> /// Gets the projects. /// </summary> /// <param name="address">The address.</param> /// <returns> /// The projects from the server. /// </returns> public override async Task <IList <Project> > GetProjects(string address) { var result = new List <Project>(); var server = CruiseControlManager.GetServer(address, false); CruiseControlJobs allProjects = null; try { allProjects = await server.GetAllProjects(); } catch (Exception ex) { throw ex; } if (allProjects == null) { throw new Exception(); } var serverProjects = new List <Project>(); foreach (var project in allProjects.CruiseControlProject) { var serverProjectTreeItem = new Project(address, project.Name, address + "server/" + project.ServerName + "/project/" + project.Name + "/ViewProjectReport.aspx"); if (string.IsNullOrWhiteSpace(project.ServerName)) { result.Add(serverProjectTreeItem); } else { var serverProject = serverProjects.FirstOrDefault(s => s.Name == project.ServerName); if (serverProject == null) { serverProject = new Project(null, project.ServerName, address + "server/" + project.ServerName + "/viewServerReport.aspx", project.Name, address + "server/" + project.ServerName + "/project/" + project.Name); serverProjects.Add(serverProject); result.Add(serverProject); } serverProject.Children.Add(serverProjectTreeItem); serverProjectTreeItem.Parent = serverProject; } } return(result); }