Esempio n. 1
0
        /// <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);
        }