/// <summary> /// Gets the projects. /// </summary> /// <param name="address">The address.</param> /// <returns> /// The projects list from the server. /// </returns> public override async Task <IList <Project> > GetProjects(string address) { var api = new JenkinsApi(); var serverProjects = new List <Project>(); await this.GetProjectsLists(address, serverProjects, api); return(serverProjects); }
/// <summary> /// Gets the projects. /// </summary> /// <param name="address">The address.</param> /// <returns> /// The projects list from the server. /// </returns> public override async Task <IList <Project> > GetProjects(string address) { var api = new JenkinsApi(); var serverProjects = new List <Project>(); try { await this.GetProjectsLists(address, serverProjects, api); } catch (Exception ex) { throw ex; } return(serverProjects); }
/// <summary> /// Gets a project list from given jenkins server address. /// </summary> /// <param name="address">The server address.</param> /// <param name="projects">The list of projects to update.</param> /// <param name="jenkinsApi">Jenkins Api instance.</param> /// <returns>A task representing the job.</returns> private async Task GetProjectsLists(string address, IList <Project> projects, JenkinsApi jenkinsApi) { JenkinsJobs jenkinsJobs; try { jenkinsJobs = await jenkinsApi.GetJenkinsJobs(address, default); } catch (Exception ex) { throw ex; } if (jenkinsJobs == null) { return; } if (jenkinsJobs?.Jobs == null) { return; } foreach (var jenkinsJob in jenkinsJobs.Jobs) { var newServerProject = this.AddProject(projects, jenkinsJob); if (string.Equals(jenkinsJob.ClassName.Trim(), "com.cloudbees.hudson.plugins.folder.Folder".Trim(), System.StringComparison.InvariantCultureIgnoreCase) || string.Equals(jenkinsJob.ClassName.Trim(), "org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject".Trim(), System.StringComparison.InvariantCultureIgnoreCase)) { await this.GetProjectsLists(jenkinsJob.Url, newServerProject.Children, jenkinsApi); foreach (var child in newServerProject.Children) { child.Parent = newServerProject; } } } }
/// <summary> /// Gets a project list from given jenkins server address. /// </summary> /// <param name="address">The server address.</param> /// <param name="serverProjects">The list of projects to update.</param> /// <param name="jenkinsApi">Jenkins Api instance.</param> /// <returns>A task representing the job.</returns> private async Task GetProjectsLists(string address, List <ServerProjectTreeItem> serverProjects, JenkinsApi jenkinsApi) { var jenkinsJobs = await jenkinsApi.GetJenkinsJobs(address, default(System.Threading.CancellationToken)); foreach (var jenkinsJob in jenkinsJobs.Jobs) { var newServerProject = this.AddServerProject(serverProjects, jenkinsJob); if (string.Equals(jenkinsJob.ClassName.Trim(), "com.cloudbees.hudson.plugins.folder.Folder".Trim(), System.StringComparison.InvariantCultureIgnoreCase) || string.Equals(jenkinsJob.ClassName.Trim(), "org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject".Trim(), System.StringComparison.InvariantCultureIgnoreCase)) { await this.GetProjectsLists(jenkinsJob.Url, newServerProject.ServerProjects, jenkinsApi); } } }