/// <summary>Gets the build definitions.</summary> /// <param name="buildServer">The build server.</param> /// <returns>The <see cref="TfsConnectResult" />.</returns> public async Task <TfsConnectResult> GetBuildDefinitions(BuildServer buildServer) { string response; using (var httpClient = WebClientFactory.CreateHttpClient(buildServer.DomainName, buildServer.Login, buildServer.PasswordBytes)) { HttpResponseMessage responseMessage; try { responseMessage = await httpClient.GetAsync(buildServer.Url); } catch (HttpRequestException exception) { return(new TfsConnectResult { Message = exception.InnerException != null ? exception.InnerException.Message : exception.Message }); } if (!responseMessage.IsSuccessStatusCode) { return(new TfsConnectResult { Message = string.Format("Error {0}:{1} - {2}", (int)responseMessage.StatusCode, responseMessage.StatusCode, responseMessage.ReasonPhrase) }); } response = await responseMessage.Content.ReadAsStringAsync(); } dynamic jsonObject = JsonConvert.DeserializeObject(response); var result = new TfsConnectResult(); try { foreach (var item in jsonObject.value) { var buildResult = new BuildDefinitionResult { Id = item.id, Name = item.name, Uri = item.uri, Url = item.url }; if (buildServer.TfsVersion == TfsVersion.Version2015) { buildResult.ProjectName = item.project.name; } result.BuildDefinitions.Add(buildResult); } } catch (Exception ex) { result.Message = "Error on getting list of builds - May be wrong TFS type - " + ex.Message; } return(result); }
/// <summary>Gets the build definitions.</summary> /// <param name="buildServer">The build server.</param> /// <returns>The <see cref="TfsConnectResult"/>.</returns> public async Task <TfsConnectResult> GetBuildDefinitions(BuildServer buildServer) { string response; using (var httpClient = WebClientFactory.CreateHttpClient(buildServer.DomainName, buildServer.Login, buildServer.PasswordBytes)) { HttpResponseMessage responseMessage; try { responseMessage = await httpClient.GetAsync(string.Concat(buildServer.Url, "/_apis/projects")); } catch (Exception exception) { return(new TfsConnectResult { Message = exception.InnerException != null ? exception.InnerException.Message : exception.Message }); } if (!responseMessage.IsSuccessStatusCode || responseMessage.StatusCode == HttpStatusCode.NonAuthoritativeInformation) { return(new TfsConnectResult { Message = string.Format("Error {0}:{1} - {2}", (int)responseMessage.StatusCode, responseMessage.StatusCode, responseMessage.ReasonPhrase) }); } response = await responseMessage.Content.ReadAsStringAsync(); } dynamic projectCollectionJson = JsonConvert.DeserializeObject(response); var result = new TfsConnectResult(); try { foreach (var project in projectCollectionJson.value) { string projectName = project.name; string projectId = project.id; using (var httpClient = WebClientFactory.CreateHttpClient(buildServer.DomainName, buildServer.Login, buildServer.PasswordBytes)) { HttpResponseMessage responseMessage; try { var requestUri = string.Concat(buildServer.Url, "/", projectId, "/_apis/build/definitions?api-version=2.0"); responseMessage = await httpClient.GetAsync(requestUri); } catch (HttpRequestException exception) { return(new TfsConnectResult { Message = exception.InnerException != null ? exception.InnerException.Message : exception.Message }); } if (!responseMessage.IsSuccessStatusCode) { return(new TfsConnectResult { Message = string.Format("Error {0}:{1} - {2}", (int)responseMessage.StatusCode, responseMessage.StatusCode, responseMessage.ReasonPhrase) }); } response = await responseMessage.Content.ReadAsStringAsync(); } dynamic definitionCollectionJson = JsonConvert.DeserializeObject(response); foreach (var definition in definitionCollectionJson.value) { var buildResult = new BuildDefinitionResult { Id = definition.id, Name = definition.name, Uri = definition.uri, Url = definition.url, ProjectName = projectName, ProjectId = projectId }; result.BuildDefinitions.Add(buildResult); } } } catch (Exception ex) { result.Message = "Error on getting list of builds - May be wrong TFS type - " + ex.Message; } return(result); }