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);
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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;
            }
        }