/// <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 = hostUrl; var jsonSerializer = new RequestsJsonSerializer(); _httpFacade = new GitLabHttpFacade( FixBaseUrl(hostUrl), jsonSerializer, authenticationToken); var projectQueryBuilder = new ProjectsQueryBuilder(); var projectIssuesQueryBuilder = new ProjectIssuesQueryBuilder(); var projectIssueNotesQueryBuilder = new ProjectIssueNotesQueryBuilder(); var issuesQueryBuilder = new IssuesQueryBuilder(); var mergeRequestsQueryBuilder = new MergeRequestsQueryBuilder(); var projectMilestonesQueryBuilder = new MilestonesQueryBuilder(); var projectMergeRequestsQueryBuilder = new ProjectMergeRequestsQueryBuilder(); var groupsQueryBuilder = new GroupsQueryBuilder(); var projectsGroupsQueryBuilder = new ProjectsGroupQueryBuilder(); Issues = new IssuesClient(_httpFacade, issuesQueryBuilder, projectIssuesQueryBuilder, projectIssueNotesQueryBuilder); MergeRequests = new MergeRequestsClient(_httpFacade, mergeRequestsQueryBuilder, projectMergeRequestsQueryBuilder); Projects = new ProjectsClient(_httpFacade, projectQueryBuilder, projectMilestonesQueryBuilder); Users = new UsersClient(_httpFacade); Groups = new GroupsClient(_httpFacade, groupsQueryBuilder, projectsGroupsQueryBuilder, projectMilestonesQueryBuilder); }
internal IssuesClient( GitLabHttpFacade httpFacade, IssuesQueryBuilder queryBuilder, ProjectIssuesQueryBuilder projectIssuesQueryBuilder) { _httpFacade = httpFacade; _queryBuilder = queryBuilder; _projectIssuesQueryBuilder = projectIssuesQueryBuilder; }
/// <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 projectIssuesQueryBuilder = new ProjectIssuesQueryBuilder(); var projectIssueNotesQueryBuilder = new ProjectIssueNotesQueryBuilder(); var issuesQueryBuilder = new IssuesQueryBuilder(); var mergeRequestsQueryBuilder = new MergeRequestsQueryBuilder(); var projectMilestonesQueryBuilder = new MilestonesQueryBuilder(); var projectMergeRequestsQueryBuilder = new ProjectMergeRequestsQueryBuilder(); var groupsQueryBuilder = new GroupsQueryBuilder(); 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(); Issues = new IssuesClient(_httpFacade, issuesQueryBuilder, projectIssuesQueryBuilder, projectIssueNotesQueryBuilder); Uploads = new UploadsClient(_httpFacade); MergeRequests = new MergeRequestsClient(_httpFacade, mergeRequestsQueryBuilder, projectMergeRequestsQueryBuilder); Projects = new ProjectsClient(_httpFacade, projectQueryBuilder, projectMilestonesQueryBuilder); Users = new UsersClient(_httpFacade); Groups = new GroupsClient(_httpFacade, groupsQueryBuilder, projectsGroupsQueryBuilder, projectMilestonesQueryBuilder); 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); }
public void NonDefaultQueryBuilt() { var sut = new ProjectIssuesQueryBuilder(); string query = sut.Build( "https://gitlab.com/api/v4/issues", new ProjectIssuesQueryOptions("projectId") { State = IssueState.Opened, Labels = { "label1", "label2" }, MilestoneTitle = "milestone1", Scope = Scope.All, AuthorId = 1, AssigneeId = 2, IssueIds = { 3, 4 }, Order = IssuesOrder.UpdatedAt, SortOrder = SortOrder.Ascending, Filter = "filter", CreatedAfter = new DateTime(1991, 11, 11, 1, 1, 1), CreatedBefore = new DateTime(1991, 12, 12, 2, 2, 2) }); query.Should().Be("https://gitlab.com/api/v4/issues?" + "id=projectId&" + "state=opened&" + "labels=label1%2clabel2&" + "milestone=milestone1&" + "scope=all&" + "author_id=1&" + "assignee_id=2&" + "iids%5b%5d=3&iids%5b%5d=4&" + "order_by=updated_at&" + "sort=asc&" + "search=filter&" + "created_after=1991-11-11T01%3a01%3a01.0000000&" + "created_before=1991-12-12T02%3a02%3a02.0000000"); }