Skip to content

Commit 51d2f9f

Browse files
authored
Get Group MergeRequests (#620)
* Get Group MergeRequests * Fix analyzers errors * Fix comments * Removed constructors/methods with int parameter for groupId * Fix CI * Fix CI * Removed useless method
1 parent f24e5b4 commit 51d2f9f

File tree

6 files changed

+50
-28
lines changed

6 files changed

+50
-28
lines changed

NGitLab.Mock/Clients/GitLabClient.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ public IGraphQLClient GraphQL
9292

9393
public IMergeRequestClient GetMergeRequest(ProjectId projectId) => new MergeRequestClient(Context, projectId);
9494

95+
public IMergeRequestClient GetGroupMergeRequest(GroupId groupId) => new MergeRequestClient(Context, groupId);
96+
9597
public IMilestoneClient GetMilestone(int projectId) => GetMilestone((long)projectId);
9698

9799
public IMilestoneClient GetMilestone(ProjectId projectId) => new MilestoneClient(Context, projectId, MilestoneScope.Projects);

NGitLab.Mock/Clients/MergeRequestClient.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ public MergeRequestClient(ClientContext context, ProjectId projectId)
2525
_projectId = Server.AllProjects.FindProject(projectId.ValueAsUriParameter()).Id;
2626
}
2727

28+
public MergeRequestClient(ClientContext context, GroupId groupId)
29+
: base(context)
30+
{
31+
throw new NotImplementedException();
32+
}
33+
2834
private void AssertProjectId()
2935
{
3036
if (_projectId == null)

NGitLab/GitLabClient.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@ public IMergeRequestClient GetMergeRequest(int projectId)
156156
public IMergeRequestClient GetMergeRequest(ProjectId projectId)
157157
=> new MergeRequestClient(_api, projectId);
158158

159+
public IMergeRequestClient GetGroupMergeRequest(GroupId groupId)
160+
=> new MergeRequestClient(_api, groupId);
161+
159162
public IMilestoneClient GetMilestone(int projectId)
160163
=> GetMilestone((long)projectId);
161164

NGitLab/IGitLabClient.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ public interface IGitLabClient
7979

8080
IMergeRequestClient GetMergeRequest(ProjectId projectId);
8181

82+
IMergeRequestClient GetGroupMergeRequest(GroupId groupId);
83+
8284
[EditorBrowsable(EditorBrowsableState.Never)]
8385
IMilestoneClient GetMilestone(int projectId);
8486

NGitLab/Impl/MergeRequestClient.cs

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,31 @@ public class MergeRequestClient : IMergeRequestClient
1414
private const string ResourceLabelEventUrl = "/projects/{0}/merge_requests/{1}/resource_label_events";
1515
private const string ResourceMilestoneEventUrl = "/projects/{0}/merge_requests/{1}/resource_milestone_events";
1616
private const string ResourceStateEventUrl = "/projects/{0}/merge_requests/{1}/resource_state_events";
17-
private readonly string _projectPath;
17+
private readonly string _path;
1818
private readonly API _api;
1919

2020
[EditorBrowsable(EditorBrowsableState.Never)]
2121
public MergeRequestClient(API api, int projectId)
22-
: this(api, (long)projectId)
22+
: this(api, projectId: (long)projectId)
2323
{
2424
}
2525

2626
public MergeRequestClient(API api, ProjectId projectId)
2727
{
2828
_api = api;
29-
_projectPath = $"{Project.Url}/{projectId.ValueAsUriParameter()}";
29+
_path = $"{Project.Url}/{projectId.ValueAsUriParameter()}";
30+
}
31+
32+
public MergeRequestClient(API api, GroupId groupId)
33+
{
34+
_api = api;
35+
_path = $"{Group.Url}/{groupId.ValueAsUriParameter()}";
3036
}
3137

3238
public MergeRequestClient(API api)
3339
{
3440
_api = api;
35-
_projectPath = string.Empty;
41+
_path = string.Empty;
3642
}
3743

3844
public IEnumerable<MergeRequest> All => Get(new MergeRequestQuery());
@@ -41,7 +47,7 @@ public MergeRequestClient(API api)
4147

4248
public IEnumerable<MergeRequest> Get(MergeRequestQuery query)
4349
{
44-
var url = _projectPath + MergeRequest.Url;
50+
var url = _path + MergeRequest.Url;
4551

4652
url = Utils.AddParameter(url, "state", query.State);
4753
url = Utils.AddParameter(url, "order_by", query.OrderBy);
@@ -71,7 +77,7 @@ public MergeRequest this[int iid]
7177
{
7278
get
7379
{
74-
var url = $"{_projectPath}{MergeRequest.Url}/{iid.ToStringInvariant()}";
80+
var url = $"{_path}{MergeRequest.Url}/{iid.ToStringInvariant()}";
7581
url = Utils.AddParameter(url, "include_rebase_in_progress", value: true);
7682
url = Utils.AddParameter(url, "include_diverged_commits_count", value: true);
7783

@@ -81,7 +87,7 @@ public MergeRequest this[int iid]
8187

8288
public Task<MergeRequest> GetByIidAsync(int iid, SingleMergeRequestQuery options, CancellationToken cancellationToken = default)
8389
{
84-
var url = $"{_projectPath}{MergeRequest.Url}/{iid.ToStringInvariant()}";
90+
var url = $"{_path}{MergeRequest.Url}/{iid.ToStringInvariant()}";
8591
if (options != null)
8692
{
8793
url = Utils.AddParameter(url, "include_rebase_in_progress", options.IncludeRebaseInProgress);
@@ -99,83 +105,83 @@ public MergeRequest Create(MergeRequestCreate mergeRequest)
99105

100106
return _api
101107
.Post().With(mergeRequest)
102-
.To<MergeRequest>(_projectPath + "/merge_requests");
108+
.To<MergeRequest>(_path + "/merge_requests");
103109
}
104110

105111
public MergeRequest Update(int mergeRequestIid, MergeRequestUpdate mergeRequest) => _api
106112
.Put().With(mergeRequest)
107-
.To<MergeRequest>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture));
113+
.To<MergeRequest>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture));
108114

109115
public MergeRequest Close(int mergeRequestIid) => _api
110116
.Put().With(new MergeRequestUpdateState { NewState = nameof(MergeRequestStateEvent.close) })
111-
.To<MergeRequest>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture));
117+
.To<MergeRequest>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture));
112118

113119
public MergeRequest Reopen(int mergeRequestIid) => _api
114120
.Put().With(new MergeRequestUpdateState { NewState = nameof(MergeRequestStateEvent.reopen) })
115-
.To<MergeRequest>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture));
121+
.To<MergeRequest>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture));
116122

117123
public void Delete(int mergeRequestIid) => _api
118124
.Delete()
119-
.Execute(_projectPath + "/merge_requests/" + mergeRequestIid.ToStringInvariant());
125+
.Execute(_path + "/merge_requests/" + mergeRequestIid.ToStringInvariant());
120126

121127
public MergeRequest CancelMergeWhenPipelineSucceeds(int mergeRequestIid) => _api
122128
.Post()
123-
.To<MergeRequest>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/cancel_merge_when_pipeline_succeeds");
129+
.To<MergeRequest>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/cancel_merge_when_pipeline_succeeds");
124130

125131
public MergeRequest Accept(int mergeRequestIid, MergeRequestAccept message) => _api
126132
.Put().With(message)
127-
.To<MergeRequest>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/merge");
133+
.To<MergeRequest>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/merge");
128134

129135
public MergeRequest Accept(int mergeRequestIid, MergeRequestMerge message) => _api
130136
.Put().With(message)
131-
.To<MergeRequest>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/merge");
137+
.To<MergeRequest>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/merge");
132138

133139
public MergeRequest Approve(int mergeRequestIid, MergeRequestApprove message) => _api
134140
.Post().With(message)
135-
.To<MergeRequest>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/approve");
141+
.To<MergeRequest>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/approve");
136142

137143
public RebaseResult Rebase(int mergeRequestIid) => _api
138144
.Put()
139-
.To<RebaseResult>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/rebase");
145+
.To<RebaseResult>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/rebase");
140146

141147
public Task<RebaseResult> RebaseAsync(int mergeRequestIid, MergeRequestRebase options, CancellationToken cancellationToken = default) => _api
142148
.Put().With(options)
143-
.ToAsync<RebaseResult>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/rebase", cancellationToken);
149+
.ToAsync<RebaseResult>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/rebase", cancellationToken);
144150

145151
public IEnumerable<PipelineBasic> GetPipelines(int mergeRequestIid)
146152
{
147-
return _api.Get().GetAll<PipelineBasic>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/pipelines");
153+
return _api.Get().GetAll<PipelineBasic>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/pipelines");
148154
}
149155

150156
public IEnumerable<Author> GetParticipants(int mergeRequestIid)
151157
{
152-
return _api.Get().GetAll<Author>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/participants");
158+
return _api.Get().GetAll<Author>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/participants");
153159
}
154160

155161
public IEnumerable<Issue> ClosesIssues(int mergeRequestIid)
156162
{
157-
return _api.Get().GetAll<Issue>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/closes_issues");
163+
return _api.Get().GetAll<Issue>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/closes_issues");
158164
}
159165

160166
public GitLabCollectionResponse<MergeRequestVersion> GetVersionsAsync(int mergeRequestIid)
161167
{
162-
return _api.Get().GetAllAsync<MergeRequestVersion>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/versions");
168+
return _api.Get().GetAllAsync<MergeRequestVersion>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/versions");
163169
}
164170

165171
public Task<TimeStats> TimeStatsAsync(int mergeRequestIid, CancellationToken cancellationToken = default)
166172
{
167-
return _api.Get().ToAsync<TimeStats>(_projectPath + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/time_stats", cancellationToken);
173+
return _api.Get().ToAsync<TimeStats>(_path + "/merge_requests/" + mergeRequestIid.ToString(CultureInfo.InvariantCulture) + "/time_stats", cancellationToken);
168174
}
169175

170-
public IMergeRequestCommentClient Comments(int mergeRequestIid) => new MergeRequestCommentClient(_api, _projectPath, mergeRequestIid);
176+
public IMergeRequestCommentClient Comments(int mergeRequestIid) => new MergeRequestCommentClient(_api, _path, mergeRequestIid);
171177

172-
public IMergeRequestDiscussionClient Discussions(int mergeRequestIid) => new MergeRequestDiscussionClient(_api, _projectPath, mergeRequestIid);
178+
public IMergeRequestDiscussionClient Discussions(int mergeRequestIid) => new MergeRequestDiscussionClient(_api, _path, mergeRequestIid);
173179

174-
public IMergeRequestCommitClient Commits(int mergeRequestIid) => new MergeRequestCommitClient(_api, _projectPath, mergeRequestIid);
180+
public IMergeRequestCommitClient Commits(int mergeRequestIid) => new MergeRequestCommitClient(_api, _path, mergeRequestIid);
175181

176-
public IMergeRequestApprovalClient ApprovalClient(int mergeRequestIid) => new MergeRequestApprovalClient(_api, _projectPath, mergeRequestIid);
182+
public IMergeRequestApprovalClient ApprovalClient(int mergeRequestIid) => new MergeRequestApprovalClient(_api, _path, mergeRequestIid);
177183

178-
public IMergeRequestChangeClient Changes(int mergeRequestIid) => new MergeRequestChangeClient(_api, _projectPath, mergeRequestIid);
184+
public IMergeRequestChangeClient Changes(int mergeRequestIid) => new MergeRequestChangeClient(_api, _path, mergeRequestIid);
179185

180186
public GitLabCollectionResponse<ResourceLabelEvent> ResourceLabelEventsAsync(int projectId, int mergeRequestIid)
181187
{

NGitLab/PublicAPI.Unshipped.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ NGitLab.GitLabClient.GetEnvironmentClient(NGitLab.Models.ProjectId projectId) ->
5454
NGitLab.GitLabClient.GetEvents() -> NGitLab.IEventClient
5555
NGitLab.GitLabClient.GetGroupBadgeClient(int groupId) -> NGitLab.IGroupBadgeClient
5656
NGitLab.GitLabClient.GetGroupBadgeClient(NGitLab.Models.GroupId groupId) -> NGitLab.IGroupBadgeClient
57+
NGitLab.GitLabClient.GetGroupMergeRequest(NGitLab.Models.GroupId groupId) -> NGitLab.IMergeRequestClient
5758
NGitLab.GitLabClient.GetGroupMilestone(int groupId) -> NGitLab.IMilestoneClient
5859
NGitLab.GitLabClient.GetGroupMilestone(NGitLab.Models.GroupId groupId) -> NGitLab.IMilestoneClient
5960
NGitLab.GitLabClient.GetGroupSearchClient(int groupId) -> NGitLab.ISearchClient
@@ -195,6 +196,7 @@ NGitLab.IGitLabClient.GetEnvironmentClient(NGitLab.Models.ProjectId projectId) -
195196
NGitLab.IGitLabClient.GetEvents() -> NGitLab.IEventClient
196197
NGitLab.IGitLabClient.GetGroupBadgeClient(int groupId) -> NGitLab.IGroupBadgeClient
197198
NGitLab.IGitLabClient.GetGroupBadgeClient(NGitLab.Models.GroupId groupId) -> NGitLab.IGroupBadgeClient
199+
NGitLab.IGitLabClient.GetGroupMergeRequest(NGitLab.Models.GroupId groupId) -> NGitLab.IMergeRequestClient
198200
NGitLab.IGitLabClient.GetGroupMilestone(int groupId) -> NGitLab.IMilestoneClient
199201
NGitLab.IGitLabClient.GetGroupMilestone(NGitLab.Models.GroupId groupId) -> NGitLab.IMilestoneClient
200202
NGitLab.IGitLabClient.GetGroupSearchClient(int groupId) -> NGitLab.ISearchClient
@@ -672,6 +674,7 @@ NGitLab.Impl.MergeRequestClient.GetPipelines(int mergeRequestIid) -> System.Coll
672674
NGitLab.Impl.MergeRequestClient.GetVersionsAsync(int mergeRequestIid) -> NGitLab.GitLabCollectionResponse<NGitLab.Models.MergeRequestVersion>
673675
NGitLab.Impl.MergeRequestClient.MergeRequestClient(NGitLab.Impl.API api) -> void
674676
NGitLab.Impl.MergeRequestClient.MergeRequestClient(NGitLab.Impl.API api, int projectId) -> void
677+
NGitLab.Impl.MergeRequestClient.MergeRequestClient(NGitLab.Impl.API api, NGitLab.Models.GroupId groupId) -> void
675678
NGitLab.Impl.MergeRequestClient.MergeRequestClient(NGitLab.Impl.API api, NGitLab.Models.ProjectId projectId) -> void
676679
NGitLab.Impl.MergeRequestClient.Rebase(int mergeRequestIid) -> NGitLab.Models.RebaseResult
677680
NGitLab.Impl.MergeRequestClient.RebaseAsync(int mergeRequestIid, NGitLab.Models.MergeRequestRebase options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<NGitLab.Models.RebaseResult>

0 commit comments

Comments
 (0)