Ejemplo n.º 1
0
        private void Initialize(IJenkinsPlugin jenkinsPlugin)
        {
            try
            {
                _handler = new WebRequestHandler
                {
                    UseDefaultCredentials = true
                };

                if (jenkinsPlugin.IgnoreSslErrors)
                {
                    _handler.ServerCertificateValidationCallback += OnServerCertificateValidationCallback;
                }

                _client = new HttpClient(_handler);

                if (string.IsNullOrEmpty(jenkinsPlugin.UserName) || string.IsNullOrEmpty(jenkinsPlugin.ApiToken))
                {
                    return;
                }

                Authorize(jenkinsPlugin);
            }
            catch (Exception ex)
            {
                throw new Exception("An error occurred while creating Jenkins request. See inner exception.", ex);
            }
        }
Ejemplo n.º 2
0
        public async Task <JenkinsView> GetViewAsync(IJenkinsPlugin jenkinsPlugin)
        {
            const string api = "api/json";

            using (var jenkinsRequest = new JenkinsRequest(jenkinsPlugin))
            {
                return(await jenkinsRequest.GetAsync <JenkinsView>(jenkinsPlugin, api).ConfigureAwait(false));
            }
        }
Ejemplo n.º 3
0
        public async Task <JenkinsJob> GetJobAsync(IJenkinsPlugin 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));
            }
        }
Ejemplo n.º 4
0
        public JenkinsRequest(IJenkinsPlugin jenkinsPlugin)
        {
            if (jenkinsPlugin == null)
            {
                throw new ArgumentNullException(nameof(jenkinsPlugin));
            }

            Initialize(jenkinsPlugin);
        }
Ejemplo n.º 5
0
        private static Uri GetEndpoint(IJenkinsPlugin 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));
        }
Ejemplo n.º 6
0
        public async Task PostAsync(IJenkinsPlugin 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();
        }
Ejemplo n.º 7
0
        public async Task <T> GetAsync <T>(IJenkinsPlugin 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);
        }
Ejemplo n.º 8
0
        private async Task <JenkinsCrumb> IssueCrumbAsync(IJenkinsPlugin 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. See inner exception.", ex);
            }
        }
Ejemplo n.º 9
0
        private void Authorize(IJenkinsPlugin jenkinsPlugin)
        {
            var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{jenkinsPlugin.UserName}:{jenkinsPlugin.ApiToken}"));

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);
        }