@@ -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 {
0 commit comments