public async Task <TeamCityContracts.BuildDetails> GetBuildDetailsAsync(TeamCityBuild item) { var branchLocator = string.IsNullOrWhiteSpace(item.SourceControlBranch) ? string.Empty : ",branch:" + item.SourceControlBranch; var api = $"builds?locator=running:any,buildType:(id:{item.BuildTypeId}),count:1{branchLocator}&fields=build(status,running,statusText)"; var buildResponse = await RequestAsync <TeamCityContracts.BuildDetailsResponse>(api); if (buildResponse == null || buildResponse.Build == null || !buildResponse.Build.Any()) { throw new TeamCityException("Unexpected TeamCity response."); } return(buildResponse.Build.First()); }
public async Task QueueNewBuild(TeamCityBuild item) { //todo: move to SendAsync<T> using (var handler = new WebRequestHandler()) { handler.UseDefaultCredentials = true; if (item.IgnoreSslErrors) { handler.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; } using (var client = new HttpClient(handler)) { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); string authType = string.Empty; if (item.GuestUser) { authType = "guestAuth"; } else { authType = "httpAuth"; if (!string.IsNullOrEmpty(item.UserName) && !string.IsNullOrEmpty(item.Password)) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", item.UserName, item.Password)))); } } var url = $"{item.Url}/{authType}/app/rest/buildQueue"; var request = $"<build><buildType id=\"{item.BuildTypeId}\"/></build>"; var content = new StringContent(request, Encoding.UTF8, "application/xml"); var response = await client.PostAsync(url, content).ConfigureAwait(false); response.EnsureSuccessStatusCode(); } } }
public async Task QueueNewBuild(TeamCityBuild item) { //todo: move to SendAsync<T> using (var handler = new WebRequestHandler()) { handler.UseDefaultCredentials = true; if (item.IgnoreSslErrors) { handler.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; } using (var client = new HttpClient(handler)) { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); var uri = Connection.GuestUser ? $"{item.Url}/guestAuth/app/rest/buildQueue" : $"{item.Url}/app/rest/buildQueue"; if (!string.IsNullOrEmpty(item.Token)) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Connection.Token); } var request = $"<build><buildType id=\"{item.BuildTypeId}\"/></build>"; var content = new StringContent(request, Encoding.UTF8, "application/xml"); var response = await client.PostAsync(uri, content).ConfigureAwait(false); response.EnsureSuccessStatusCode(); } } }