Exemplo n.º 1
0
        public GitLabHttpFacade(string hostUrl, RequestsJsonSerializer jsonSerializer, string authenticationToken = "", HttpMessageHandler httpMessageHandler = null, TimeSpan?clientTimeout = null) :
            this(hostUrl, jsonSerializer, httpMessageHandler, clientTimeout)
        {
            switch (authenticationToken.Length)
            {
            case 0:
                break;

            case 20:
                _httpClient.DefaultRequestHeaders.Add(PrivateToken, authenticationToken);
                break;

            case 26:
                // Add support for new length of GitLab private tokens
                _httpClient.DefaultRequestHeaders.Add(PrivateToken, authenticationToken);
                break;

            case 64:
                _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authenticationToken);
                break;

            default:
                throw new ArgumentException("Unsupported authentication token provide, please private an oauth or private token");
            }
        }
Exemplo n.º 2
0
 private void Setup(RequestsJsonSerializer jsonSerializer, HttpClient httpClient)
 {
     // allow tls 1.1 and 1.2
     ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
     _httpClient     = httpClient;
     _requestor      = new GitLabApiRequestor(_httpClient, jsonSerializer);
     _pagedRequestor = new GitLabApiPagedRequestor(_requestor);
 }
Exemplo n.º 3
0
        private GitLabHttpFacade(string hostUrl, RequestsJsonSerializer jsonSerializer)
        {
            _httpClient = new HttpClient {
                BaseAddress = new Uri(hostUrl)
            };

            Setup(jsonSerializer);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creates a new instance of the GitLab API v4 client pointing to the specified hostUrl.
        /// </summary>
        /// <param name="hostUrl">Host address of GitLab instance. For example https://gitlab.example.com or https://gitlab.example.com/api/v4/ </param>
        /// <param name="authenticationToken">Personal access token. Obtained from GitLab profile settings.</param>
        /// <param name="httpMessageHandler">Optional handler for HTTP messages. Used for SSL pinning or canceling validation for example.</param>
        /// <param name="clientTimeout">Timespan with the HTTP client timeout if null default timeout is used. Sometimes required to upload files to a gitlab instance depending on filesize and networkspeed.</param>
        public GitLabClient(string hostUrl, string authenticationToken = "", HttpMessageHandler httpMessageHandler = null, TimeSpan?clientTimeout = null)
        {
            Guard.NotEmpty(hostUrl, nameof(hostUrl));
            Guard.NotNull(authenticationToken, nameof(authenticationToken));
            HostUrl = FixBaseUrl(hostUrl);

            var jsonSerializer = new RequestsJsonSerializer();

            _httpFacade = new GitLabHttpFacade(
                HostUrl,
                jsonSerializer,
                authenticationToken,
                httpMessageHandler,
                clientTimeout);

            var projectQueryBuilder              = new ProjectsQueryBuilder();
            var notesQueryBuilder                = new NotesQueryBuilder();
            var issuesQueryBuilder               = new IssuesQueryBuilder();
            var mergeRequestsQueryBuilder        = new MergeRequestsQueryBuilder();
            var projectMilestonesQueryBuilder    = new MilestonesQueryBuilder();
            var projectMergeRequestsQueryBuilder = new ProjectMergeRequestsQueryBuilder();
            var groupsQueryBuilder               = new GroupsQueryBuilder();
            var groupLabelsQueryBuilder          = new GroupLabelsQueryBuilder();
            var projectsGroupsQueryBuilder       = new ProjectsGroupQueryBuilder();
            var epicsGroupQueryBuilder           = new EpicsGroupQueryBuilder();
            var branchQueryBuilder               = new BranchQueryBuilder();
            var releaseQueryBuilder              = new ReleaseQueryBuilder();
            var tagQueryBuilder             = new TagQueryBuilder();
            var commitQueryBuilder          = new CommitQueryBuilder();
            var commitRefsQueryBuilder      = new CommitRefsQueryBuilder();
            var commitStatusesQueryBuilder  = new CommitStatusesQueryBuilder();
            var pipelineQueryBuilder        = new PipelineQueryBuilder();
            var treeQueryBuilder            = new TreeQueryBuilder();
            var jobQueryBuilder             = new JobQueryBuilder();
            var toDoListBuilder             = new ToDoListQueryBuilder();
            var groupIterationsQueryBuilder = new IterationsQueryBuilder();

            Issues        = new IssuesClient(_httpFacade, issuesQueryBuilder, notesQueryBuilder);
            Uploads       = new UploadsClient(_httpFacade);
            MergeRequests = new MergeRequestsClient(_httpFacade, mergeRequestsQueryBuilder, projectMergeRequestsQueryBuilder, notesQueryBuilder);
            Projects      = new ProjectsClient(_httpFacade, projectQueryBuilder, projectMilestonesQueryBuilder, jobQueryBuilder);
            Users         = new UsersClient(_httpFacade);
            Groups        = new GroupsClient(_httpFacade, groupsQueryBuilder, projectsGroupsQueryBuilder, projectMilestonesQueryBuilder, groupLabelsQueryBuilder, epicsGroupQueryBuilder, groupIterationsQueryBuilder);
            Epics         = new EpicsClient(_httpFacade, epicsGroupQueryBuilder, notesQueryBuilder, issuesQueryBuilder);
            Branches      = new BranchClient(_httpFacade, branchQueryBuilder);
            Releases      = new ReleaseClient(_httpFacade, releaseQueryBuilder);
            Tags          = new TagClient(_httpFacade, tagQueryBuilder);
            Webhooks      = new WebhookClient(_httpFacade);
            Commits       = new CommitsClient(_httpFacade, commitQueryBuilder, commitRefsQueryBuilder, commitStatusesQueryBuilder);
            Markdown      = new MarkdownClient(_httpFacade);
            Pipelines     = new PipelineClient(_httpFacade, pipelineQueryBuilder, jobQueryBuilder);
            Trees         = new TreesClient(_httpFacade, treeQueryBuilder);
            Files         = new FilesClient(_httpFacade);
            Runners       = new RunnersClient(_httpFacade);
            ToDoList      = new ToDoListClient(_httpFacade, toDoListBuilder);
            Connection    = new ConnectionClient(_httpFacade);
        }
Exemplo n.º 5
0
 private void Setup(RequestsJsonSerializer jsonSerializer)
 {
     // allow tls 1.1 and 1.2
     ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
     ServicePointManager.ServerCertificateValidationCallback +=
         (sender, cert, chain, sslPolicyErrors) => true;
     // ReSharper disable once InconsistentlySynchronizedField
     _requestor      = new GitLabApiRequestor(_httpClient, jsonSerializer);
     _pagedRequestor = new GitLabApiPagedRequestor(_requestor);
 }
Exemplo n.º 6
0
        public GitLabHttpFacade(string hostUrl, RequestsJsonSerializer jsonSerializer, string authenticationToken = "")
        {
            _httpClient = new HttpClient
            {
                BaseAddress = new Uri(hostUrl)
            };

            _httpClient.DefaultRequestHeaders.Add(PrivateToken, authenticationToken);
            _requestor      = new GitLabApiRequestor(_httpClient, jsonSerializer);
            _pagedRequestor = new GitLabApiPagedRequestor(_requestor);
        }
Exemplo n.º 7
0
        public GitLabHttpFacade(string hostUrl, RequestsJsonSerializer jsonSerializer, string authenticationToken = "")
        {
            var httpClient = new HttpClient
            {
                BaseAddress = new Uri(hostUrl)
            };

            httpClient.DefaultRequestHeaders.Add(PrivateToken, authenticationToken);

            Setup(jsonSerializer, httpClient);
        }
Exemplo n.º 8
0
        public GitLabHttpFacade(string hostUrl, RequestsJsonSerializer jsonSerializer, string authenticationToken = "")
        {
            // allow tls 1.1 and 1.2
            ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
            _httpClient = new HttpClient
            {
                BaseAddress = new Uri(hostUrl)
            };

            _httpClient.DefaultRequestHeaders.Add(PrivateToken, authenticationToken);
            _requestor      = new GitLabApiRequestor(_httpClient, jsonSerializer);
            _pagedRequestor = new GitLabApiPagedRequestor(_requestor);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Creates a new instance of the GitLab API v4 client pointing to the specified hostUrl.
        /// </summary>
        /// <param name="hostUrl">Host address of GitLab instance. For example https://gitlab.example.com or https://gitlab.example.com/api/v4/ </param>
        /// <param name="authenticationToken">Personal access token. Obtained from GitLab profile settings.</param>
        public GitLabClient(string hostUrl, string authenticationToken = "")
        {
            Guard.NotEmpty(hostUrl, nameof(hostUrl));
            Guard.NotNull(authenticationToken, nameof(authenticationToken));
            HostUrl = FixBaseUrl(hostUrl);

            var jsonSerializer = new RequestsJsonSerializer();

            _httpFacade = new GitLabHttpFacade(
                HostUrl,
                jsonSerializer,
                authenticationToken);

            var projectQueryBuilder                   = new ProjectsQueryBuilder();
            var projectIssueNotesQueryBuilder         = new ProjectIssueNotesQueryBuilder();
            var projectMergeRequestsNotesQueryBuilder = new ProjectMergeRequestsNotesQueryBuilder();
            var issuesQueryBuilder               = new IssuesQueryBuilder();
            var mergeRequestsQueryBuilder        = new MergeRequestsQueryBuilder();
            var projectMilestonesQueryBuilder    = new MilestonesQueryBuilder();
            var projectMergeRequestsQueryBuilder = new ProjectMergeRequestsQueryBuilder();
            var groupsQueryBuilder               = new GroupsQueryBuilder();
            var groupLabelsQueryBuilder          = new GroupLabelsQueryBuilder();
            var projectsGroupsQueryBuilder       = new ProjectsGroupQueryBuilder();
            var branchQueryBuilder               = new BranchQueryBuilder();
            var releaseQueryBuilder              = new ReleaseQueryBuilder();
            var tagQueryBuilder        = new TagQueryBuilder();
            var commitQueryBuilder     = new CommitQueryBuilder();
            var commitRefsQueryBuilder = new CommitRefsQueryBuilder();
            var pipelineQueryBuilder   = new PipelineQueryBuilder();
            var treeQueryBuilder       = new TreeQueryBuilder();
            var jobQueryBuilder        = new JobQueryBuilder();

            Issues        = new IssuesClient(_httpFacade, issuesQueryBuilder, projectIssueNotesQueryBuilder);
            Uploads       = new UploadsClient(_httpFacade);
            MergeRequests = new MergeRequestsClient(_httpFacade, mergeRequestsQueryBuilder, projectMergeRequestsQueryBuilder, projectMergeRequestsNotesQueryBuilder);
            Projects      = new ProjectsClient(_httpFacade, projectQueryBuilder, projectMilestonesQueryBuilder, jobQueryBuilder);
            Users         = new UsersClient(_httpFacade);
            Groups        = new GroupsClient(_httpFacade, groupsQueryBuilder, projectsGroupsQueryBuilder, projectMilestonesQueryBuilder, groupLabelsQueryBuilder);
            Branches      = new BranchClient(_httpFacade, branchQueryBuilder);
            Releases      = new ReleaseClient(_httpFacade, releaseQueryBuilder);
            Tags          = new TagClient(_httpFacade, tagQueryBuilder);
            Webhooks      = new WebhookClient(_httpFacade);
            Commits       = new CommitsClient(_httpFacade, commitQueryBuilder, commitRefsQueryBuilder);
            Markdown      = new MarkdownClient(_httpFacade);
            Pipelines     = new PipelineClient(_httpFacade, pipelineQueryBuilder, jobQueryBuilder);
            Trees         = new TreesClient(_httpFacade, treeQueryBuilder);
            Files         = new FilesClient(_httpFacade);
            Runners       = new RunnersClient(_httpFacade);
        }
Exemplo n.º 10
0
        public GitLabHttpFacade(string hostUrl, RequestsJsonSerializer jsonSerializer, string authenticationToken = "") :
            this(hostUrl, jsonSerializer)
        {
            switch (authenticationToken.Length)
            {
            case 0:
                break;

            case 20:
                _httpClient.DefaultRequestHeaders.Add(PrivateToken, authenticationToken);
                break;

            case 64:
                _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authenticationToken);
                break;

            default:
                throw new ArgumentException("Unsupported authentication token provide, please private an oauth or private token");
            }
        }
Exemplo n.º 11
0
        private GitLabHttpFacade(string hostUrl, RequestsJsonSerializer jsonSerializer, HttpMessageHandler httpMessageHandler, TimeSpan?clientTimeout = null)
        {
            var handler = new HttpClientHandler
            {
                ClientCertificateOptions = ClientCertificateOption.Manual,
                ServerCertificateCustomValidationCallback =
                    (httpRequestMessage, cert, cetChain, policyErrors) =>
                {
                    return(true);
                }
            };

            _httpClient = new HttpClient(handler)
            {
                BaseAddress = new Uri(hostUrl)
            };
            if (clientTimeout.HasValue)
            {
                _httpClient.Timeout = clientTimeout.Value;
            }

            Setup(jsonSerializer);
        }
Exemplo n.º 12
0
 public GitLabApiRequestor(HttpClient client, RequestsJsonSerializer jsonSerializer)
 {
     _client         = client;
     _jsonSerializer = jsonSerializer;
 }
Exemplo n.º 13
0
 public GitLabHttpFacade(RequestsJsonSerializer jsonSerializer, HttpClient httpClient) => Setup(jsonSerializer, httpClient);