public async Task <JenkinsView> GetViewAsync(IJenkins jenkinsPlugin) { const string api = "api/json"; using (var jenkinsRequest = new JenkinsRequest(jenkinsPlugin)) { return(await jenkinsRequest.GetAsync <JenkinsView>(jenkinsPlugin, api).ConfigureAwait(false)); } }
public JenkinsRequest(IJenkins jenkinsPlugin) { if (jenkinsPlugin == null) { throw new ArgumentNullException(nameof(jenkinsPlugin)); } Initialize(jenkinsPlugin); }
public async Task <JenkinsJob> GetJobAsync(IJenkins jenkinsPlugin) { const string api = "lastBuild/api/json?tree=result,building,executor[progress]"; using (var jenkinsRequest = new JenkinsRequest(jenkinsPlugin)) { return(await jenkinsRequest.GetAsync <JenkinsJob>(jenkinsPlugin, api).ConfigureAwait(false)); } }
private static Uri GetEndpoint(IJenkins jenkinsPlugin, string api, bool useBaseUri) { var jenkinsUri = new Uri(jenkinsPlugin.URL); if (useBaseUri) { jenkinsUri = new Uri(jenkinsUri.GetLeftPart(UriPartial.Authority)); } return(new Uri(jenkinsUri, api)); }
public async Task PostAsync(IJenkins jenkinsPlugin, string api, bool useBaseUri = false, JenkinsCrumb crumb = null) { AddCrumbHeader(crumb); var endpoint = GetEndpoint(jenkinsPlugin, api, useBaseUri); var test = new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("json", "{\"parameter\":[]}") }); var response = await _client.PostAsync(endpoint, test).ConfigureAwait(false); response.EnsureSuccessStatusCode(); }
public async Task <T> GetAsync <T>(IJenkins jenkinsPlugin, string api, bool useBaseUri = false) { var endpoint = GetEndpoint(jenkinsPlugin, api, useBaseUri); var response = await _client.GetAsync(endpoint).ConfigureAwait(false); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false); if (string.IsNullOrEmpty(content)) { throw new Exception("Jenkins response is null or empty."); } var result = new JavaScriptSerializer().Deserialize <T>(content); return(result); }
private void Initialize(IJenkins jenkins) { _handler = new WebRequestHandler { UseDefaultCredentials = true }; if (jenkins.IgnoreSslErrors) { _handler.ServerCertificateValidationCallback += OnServerCertificateValidationCallback; } _client = new HttpClient(_handler); if (string.IsNullOrEmpty(jenkins.UserName) || string.IsNullOrEmpty(jenkins.ApiToken)) { return; } Authorize(jenkins); }
private async Task <JenkinsCrumb> IssueCrumbAsync(IJenkins jenkinsPlugin) { const string api = "crumbIssuer/api/json"; try { using (var jenkinsRequest = new JenkinsRequest(jenkinsPlugin)) { var crumb = await jenkinsRequest.GetAsync <JenkinsCrumb>(jenkinsPlugin, api, true).ConfigureAwait(false); if (!crumb.IsValid()) { _logger.Info("Jenkins server did not return a valid crumb. Make sure your user name and API token are correct."); } return(crumb); } } catch (Exception ex) { throw new Exception("Jenkins: An error occurred while requesting crumb. Try to enable or disable CSRF in the properties window.", ex); } }
private void Authorize(IJenkins jenkinsPlugin) { var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{jenkinsPlugin.UserName}:{jenkinsPlugin.ApiToken}")); _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials); }