public override Connector CreateNew(ConnectorConfiguration configuration) { log.Debug("Creating new JenkinsProject based on configuration {configuration}", new { Name = configuration.Name, Identifier = configuration.Identifier }); var jenkinsProject = new JenkinsProject(configuration, new JenkinsApi()); return(jenkinsProject); }
public async Task <JenkinsBuild> GetJenkinsBuild(JenkinsProject connector, int buildNumber, CancellationToken token) { var address = connector.GetAddress(); var projectName = connector.GetProject(); var buildRequest = $"{address.Trim('/')}/job/{projectName.Trim('/')}/{buildNumber}/api/json?tree={JenkinsBuild.RequestProperties}"; log.Trace("Querying build: {jobRequest}", buildRequest); return(await GetJenkinsModel <JenkinsBuild>(connector, buildRequest, token)); }
public async Task <JenkinsJob> GetJenkinsJob(JenkinsProject connector, CancellationToken token) { var address = connector.GetAddress(); var projectName = connector.GetProject(); var jobRequest = $"{address.Trim('/')}/job/{projectName.Trim('/')}/api/json?tree={JenkinsJob.RequestProperties}"; log.Trace("Querying job: {jobRequest}", jobRequest); return(await GetJenkinsModel <JenkinsJob>(connector, jobRequest, token)); }
private static async Task <TModel> GetJenkinsModel <TModel>(JenkinsProject connector, string requestUrl, CancellationToken token) where TModel : class { var request = WebRequest.Create(requestUrl); try { using (token.Register(() => request.Abort(), false)) using (var response = await request.GetResponseAsync()) { // Get the stream containing content returned by the server // Open the stream using a StreamReader for easy access using (var dataStream = response.GetResponseStream()) using (var reader = new StreamReader(dataStream)) { var responseFromServer = reader.ReadToEnd(); var settings = new JsonSerializerSettings { Error = (s, e) => { e.ErrorContext.Handled = true; throw new InvalidPlugInApiResponseException("Error while potential Jenkins response deserialization"); } }; return(JsonConvert.DeserializeObject <TModel>(responseFromServer, settings)); } } } catch (WebException ex) { if (token.IsCancellationRequested) { throw new OperationCanceledException(ex.Message, ex, token); } throw; } }