fs-gitlab 4.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +270 -0
  3. data/LICENSE.txt +24 -0
  4. data/README.md +260 -0
  5. data/exe/gitlab +11 -0
  6. data/lib/gitlab/api.rb +24 -0
  7. data/lib/gitlab/cli.rb +89 -0
  8. data/lib/gitlab/cli_helpers.rb +243 -0
  9. data/lib/gitlab/client/access_requests.rb +103 -0
  10. data/lib/gitlab/client/application_settings.rb +172 -0
  11. data/lib/gitlab/client/avatar.rb +21 -0
  12. data/lib/gitlab/client/award_emojis.rb +137 -0
  13. data/lib/gitlab/client/boards.rb +146 -0
  14. data/lib/gitlab/client/branches.rb +135 -0
  15. data/lib/gitlab/client/broadcast_messages.rb +75 -0
  16. data/lib/gitlab/client/build_variables.rb +135 -0
  17. data/lib/gitlab/client/builds.rb +108 -0
  18. data/lib/gitlab/client/commits.rb +216 -0
  19. data/lib/gitlab/client/container_registry.rb +85 -0
  20. data/lib/gitlab/client/deployments.rb +34 -0
  21. data/lib/gitlab/client/environments.rb +89 -0
  22. data/lib/gitlab/client/epic_issues.rb +23 -0
  23. data/lib/gitlab/client/epics.rb +73 -0
  24. data/lib/gitlab/client/events.rb +60 -0
  25. data/lib/gitlab/client/features.rb +48 -0
  26. data/lib/gitlab/client/group_badges.rb +88 -0
  27. data/lib/gitlab/client/group_boards.rb +141 -0
  28. data/lib/gitlab/client/group_labels.rb +88 -0
  29. data/lib/gitlab/client/group_milestones.rb +94 -0
  30. data/lib/gitlab/client/groups.rb +358 -0
  31. data/lib/gitlab/client/issue_links.rb +48 -0
  32. data/lib/gitlab/client/issues.rb +231 -0
  33. data/lib/gitlab/client/jobs.rb +250 -0
  34. data/lib/gitlab/client/keys.rb +29 -0
  35. data/lib/gitlab/client/labels.rb +88 -0
  36. data/lib/gitlab/client/lint.rb +19 -0
  37. data/lib/gitlab/client/markdown.rb +23 -0
  38. data/lib/gitlab/client/merge_request_approvals.rb +265 -0
  39. data/lib/gitlab/client/merge_requests.rb +386 -0
  40. data/lib/gitlab/client/milestones.rb +106 -0
  41. data/lib/gitlab/client/namespaces.rb +22 -0
  42. data/lib/gitlab/client/notes.rb +313 -0
  43. data/lib/gitlab/client/packages.rb +95 -0
  44. data/lib/gitlab/client/pipeline_schedules.rb +147 -0
  45. data/lib/gitlab/client/pipeline_triggers.rb +103 -0
  46. data/lib/gitlab/client/pipelines.rb +105 -0
  47. data/lib/gitlab/client/project_badges.rb +85 -0
  48. data/lib/gitlab/client/project_clusters.rb +83 -0
  49. data/lib/gitlab/client/project_release_links.rb +76 -0
  50. data/lib/gitlab/client/project_releases.rb +79 -0
  51. data/lib/gitlab/client/projects.rb +708 -0
  52. data/lib/gitlab/client/protected_tags.rb +59 -0
  53. data/lib/gitlab/client/remote_mirrors.rb +51 -0
  54. data/lib/gitlab/client/repositories.rb +113 -0
  55. data/lib/gitlab/client/repository_files.rb +131 -0
  56. data/lib/gitlab/client/repository_submodules.rb +27 -0
  57. data/lib/gitlab/client/resource_label_events.rb +82 -0
  58. data/lib/gitlab/client/resource_state_events.rb +57 -0
  59. data/lib/gitlab/client/runners.rb +211 -0
  60. data/lib/gitlab/client/search.rb +66 -0
  61. data/lib/gitlab/client/services.rb +53 -0
  62. data/lib/gitlab/client/sidekiq.rb +39 -0
  63. data/lib/gitlab/client/snippets.rb +95 -0
  64. data/lib/gitlab/client/system_hooks.rb +64 -0
  65. data/lib/gitlab/client/tags.rb +97 -0
  66. data/lib/gitlab/client/templates.rb +100 -0
  67. data/lib/gitlab/client/todos.rb +46 -0
  68. data/lib/gitlab/client/user_snippets.rb +114 -0
  69. data/lib/gitlab/client/users.rb +397 -0
  70. data/lib/gitlab/client/versions.rb +18 -0
  71. data/lib/gitlab/client/wikis.rb +79 -0
  72. data/lib/gitlab/client.rb +95 -0
  73. data/lib/gitlab/configuration.rb +57 -0
  74. data/lib/gitlab/error.rb +170 -0
  75. data/lib/gitlab/file_response.rb +48 -0
  76. data/lib/gitlab/help.rb +94 -0
  77. data/lib/gitlab/objectified_hash.rb +51 -0
  78. data/lib/gitlab/page_links.rb +35 -0
  79. data/lib/gitlab/paginated_response.rb +110 -0
  80. data/lib/gitlab/request.rb +109 -0
  81. data/lib/gitlab/shell.rb +83 -0
  82. data/lib/gitlab/shell_history.rb +57 -0
  83. data/lib/gitlab/version.rb +5 -0
  84. data/lib/gitlab.rb +56 -0
  85. metadata +204 -0
@@ -0,0 +1,386 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to merge requests.
5
+ # @see https://docs.gitlab.com/ce/api/merge_requests.html
6
+ module MergeRequests
7
+ # Gets a list of all of the merge requests the authenticated user has access to.
8
+ #
9
+ # @example
10
+ # Gitlab.user_merge_requests
11
+ # Gitlab.user_merge_requests(state: :opened, scope: :all)
12
+ #
13
+ # @param [Hash] options A customizable set of options.
14
+ # @return [Array<Gitlab::ObjectifiedHash>]
15
+ def user_merge_requests(options = {})
16
+ get('/merge_requests', query: options)
17
+ end
18
+
19
+ # Gets a list of project merge requests.
20
+ #
21
+ # @example
22
+ # Gitlab.merge_requests(5)
23
+ # Gitlab.merge_requests(5, { per_page: 40 })
24
+ #
25
+ # @param [Integer, String] project The ID or name of a project.
26
+ # @param [Hash] options A customizable set of options.
27
+ # @option options [Integer] :page The page number.
28
+ # @option options [Integer] :per_page The number of results per page.
29
+ # @return [Array<Gitlab::ObjectifiedHash>]
30
+ def merge_requests(project, options = {})
31
+ get("/projects/#{url_encode project}/merge_requests", query: options)
32
+ end
33
+
34
+ # Gets a single merge request.
35
+ #
36
+ # @example
37
+ # Gitlab.merge_request(5, 36)
38
+ # Gitlab.merge_request(5, 36, { include_diverged_commits_count: true })
39
+ #
40
+ # @param [Integer, String] project The ID or name of a project.
41
+ # @param [Integer] id The ID of a merge request.
42
+ # @option options [Boolean] :render_html If true response includes rendered HTML for title and description.
43
+ # @option options [Boolean] :include_diverged_commits_count If true response includes the commits behind the target branch.
44
+ # @option options [Boolean] :include_rebase_in_progress If true response includes whether a rebase operation is in progress.
45
+ # @return <Gitlab::ObjectifiedHash]
46
+ def merge_request(project, id, options = {})
47
+ get("/projects/#{url_encode project}/merge_requests/#{id}", query: options)
48
+ end
49
+
50
+ # Gets a list of merge request pipelines.
51
+ #
52
+ # @example
53
+ # Gitlab.merge_request_pipelines(5, 36)
54
+ #
55
+ # @param [Integer, String] project The ID or name of a project.
56
+ # @param [Integer] id The ID of a merge request.
57
+ # @return [Array<Gitlab::ObjectifiedHash>]
58
+ def merge_request_pipelines(project, id)
59
+ get("/projects/#{url_encode project}/merge_requests/#{id}/pipelines")
60
+ end
61
+
62
+ # Create a new pipeline for a merge request.
63
+ # A pipeline created via this endpoint doesnt run a regular branch/tag pipeline.
64
+ # It requires .gitlab-ci.yml to be configured with only: [merge_requests] to create jobs.
65
+ #
66
+ # The new pipeline can be:
67
+ #
68
+ # A detached merge request pipeline.
69
+ # A pipeline for merged results if the project setting is enabled.
70
+ #
71
+ # @example
72
+ # Gitlab.create_merge_request_pipeline(5, 36)
73
+ #
74
+ # @param [Integer, String] project The ID or name of a project.
75
+ # @param [Integer] iid The internal ID of a merge request.
76
+ # @return [Gitlab::ObjectifiedHash]
77
+ def create_merge_request_pipeline(project, iid)
78
+ post("/projects/#{url_encode project}/merge_requests/#{iid}/pipelines")
79
+ end
80
+
81
+ # Get a list of merge request participants.
82
+ #
83
+ # @example
84
+ # Gitlab.merge_request_participants(5, 36)
85
+ #
86
+ # @param [Integer, String] project The ID or name of a project.
87
+ # @param [Integer] id The ID of a merge request.
88
+ # @return [Array<Gitlab::ObjectifiedHash>]
89
+ def merge_request_participants(project, id)
90
+ get("/projects/#{url_encode project}/merge_requests/#{id}/participants")
91
+ end
92
+
93
+ # Creates a merge request.
94
+ #
95
+ # @example
96
+ # Gitlab.create_merge_request(5, 'New merge request',
97
+ # { source_branch: 'source_branch', target_branch: 'target_branch' })
98
+ # Gitlab.create_merge_request(5, 'New merge request',
99
+ # { source_branch: 'source_branch', target_branch: 'target_branch', assignee_id: 42 })
100
+ #
101
+ # @param [Integer, String] project The ID or name of a project.
102
+ # @param [String] title The title of a merge request.
103
+ # @param [Hash] options A customizable set of options.
104
+ # @option options [String] :source_branch (required) The source branch name.
105
+ # @option options [String] :target_branch (required) The target branch name.
106
+ # @option options [Integer] :assignee_id (optional) The ID of a user to assign merge request.
107
+ # @option options [Array<Integer>] :assignee_ids (optional) The ID of the user(s) to assign the MR to. Set to 0 or provide an empty value to unassign all assignees.
108
+ # @option options [String] :description (optional) Description of MR. Limited to 1,048,576 characters.
109
+ # @option options [Integer] :target_project_id (optional) The target project ID.
110
+ # @option options [String] :labels (optional) Labels as a comma-separated list.
111
+ # @option options [Integer] :milestone_id (optional) The global ID of a milestone
112
+ # @option options [Boolean] :remove_source_branch (optional) Flag indicating if a merge request should remove the source branch when merging
113
+ # @option options [Boolean] :allow_collaboration (optional) Allow commits from members who can merge to the target branch
114
+ # @option options [Boolean] :squash (optional) Squash commits into a single commit when merging
115
+ # @return [Gitlab::ObjectifiedHash] Information about created merge request.
116
+ def create_merge_request(project, title, options = {})
117
+ body = { title: title }.merge(options)
118
+ post("/projects/#{url_encode project}/merge_requests", body: body)
119
+ end
120
+
121
+ # Updates a merge request.
122
+ #
123
+ # @example
124
+ # Gitlab.update_merge_request(5, 42, { title: 'New title' })
125
+ #
126
+ # @param [Integer, String] project The ID or name of a project.
127
+ # @param [Integer] id The ID of a merge request.
128
+ # @param [Hash] options A customizable set of options.
129
+ # @option options [String] :title The title of a merge request.
130
+ # @option options [String] :source_branch The source branch name.
131
+ # @option options [String] :target_branch The target branch name.
132
+ # @option options [Integer] :assignee_id The ID of a user to assign merge request.
133
+ # @option options [String] :state_event New state (close|reopen|merge).
134
+ # @return [Gitlab::ObjectifiedHash] Information about updated merge request.
135
+ def update_merge_request(project, id, options = {})
136
+ put("/projects/#{url_encode project}/merge_requests/#{id}", body: options)
137
+ end
138
+
139
+ # Accepts a merge request.
140
+ #
141
+ # @example
142
+ # Gitlab.accept_merge_request(5, 42, { merge_commit_message: 'Nice!' })
143
+ #
144
+ # @param [Integer, String] project The ID or name of a project.
145
+ # @param [Integer] id The ID of a merge request.
146
+ # @param [Hash] options A customizable set of options.
147
+ # @option options [String] :merge_commit_message(optional) Custom merge commit message
148
+ # @option options [String] :squash_commit_message(optional) Custom squash commit message
149
+ # @option options [Boolean] :squash(optional) if true the commits will be squashed into a single commit on merge
150
+ # @option options [Boolean] :should_remove_source_branch(optional) if true removes the source branch
151
+ # @option options [Boolean] :merge_when_pipeline_succeeds(optional) if true the MR is merged when the pipeline succeeds
152
+ # @option options [String] :sha(optional) if present, then this SHA must match the HEAD of the source branch, otherwise the merge will fail
153
+ # @return [Gitlab::ObjectifiedHash] Information about updated merge request.
154
+ def accept_merge_request(project, id, options = {})
155
+ put("/projects/#{url_encode project}/merge_requests/#{id}/merge", body: options)
156
+ end
157
+
158
+ # Gets the changes of a merge request.
159
+ #
160
+ # @example
161
+ # Gitlab.merge_request_changes(5, 1)
162
+ #
163
+ # @param [Integer, String] project The ID or name of a project.
164
+ # @param [Integer] id The ID of a merge request.
165
+ # @return [Gitlab::ObjectifiedHash] The merge request's changes.
166
+ def merge_request_changes(project, id)
167
+ get("/projects/#{url_encode project}/merge_requests/#{id}/changes")
168
+ end
169
+
170
+ # Gets the commits of a merge request.
171
+ #
172
+ # @example
173
+ # Gitlab.merge_request_commits(5, 1)
174
+ #
175
+ # @param [Integer, String] project The ID or name of a project.
176
+ # @param [Integer] id The ID of a merge request.
177
+ # @return [Array<Gitlab::ObjectifiedHash>] The merge request's commits.
178
+ def merge_request_commits(project, id)
179
+ get("/projects/#{url_encode project}/merge_requests/#{id}/commits")
180
+ end
181
+
182
+ # List issues that will close on merge
183
+ #
184
+ # @example
185
+ # Gitlab.merge_request_closes_issues(5, 1)
186
+ #
187
+ # @param [Integer] project The ID of a project
188
+ # @param [Integer] iid The internal ID of a merge request
189
+ def merge_request_closes_issues(project_id, merge_request_iid)
190
+ get("/projects/#{url_encode project_id}/merge_requests/#{merge_request_iid}/closes_issues")
191
+ end
192
+
193
+ # Subscribes to a merge request.
194
+ #
195
+ # @example
196
+ # Gitlab.subscribe_to_merge_request(5, 1)
197
+ # Gitlab.subscribe_to_merge_request('gitlab', 1)
198
+ #
199
+ # @param [Integer, String] project The ID or name of a project.
200
+ # @param [Integer] id The ID of a merge request.
201
+ # @return [Gitlab::ObjectifiedHash] Information about subscribed merge request.
202
+ def subscribe_to_merge_request(project, id)
203
+ post("/projects/#{url_encode project}/merge_requests/#{id}/subscribe")
204
+ end
205
+
206
+ # Unsubscribes from a merge request.
207
+ #
208
+ # @example
209
+ # Gitlab.unsubscribe_from_merge_request(5, 1)
210
+ # Gitlab.unsubscribe_from_merge_request('gitlab', 1)
211
+ #
212
+ # @param [Integer, String] project The ID or name of a project.
213
+ # @param [Integer] id The ID of a merge request.
214
+ # @return [Gitlab::ObjectifiedHash] Information about unsubscribed merge request.
215
+ def unsubscribe_from_merge_request(project, id)
216
+ post("/projects/#{url_encode project}/merge_requests/#{id}/unsubscribe")
217
+ end
218
+
219
+ # List project merge request discussions
220
+ #
221
+ # @example
222
+ # Gitlab.merge_request_discussions(5, 1)
223
+ # Gitlab.merge_request_discussions('gitlab', 1)
224
+ # @param [Integer, String] project The ID or name of a project.
225
+ # @param [Integer] id The ID of a merge request.
226
+ # @return [Gitlab::ObjectifiedHash] List of the merge request discussions.
227
+ def merge_request_discussions(project, merge_request_id)
228
+ get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions")
229
+ end
230
+
231
+ # Get single merge request discussion
232
+ #
233
+ # @example
234
+ # Gitlab.merge_request_discussion(5, 1, 1)
235
+ # Gitlab.merge_request_discussion('gitlab', 1, 1)
236
+ # @param [Integer, String] project The ID or name of a project.
237
+ # @param [Integer] id The ID of a merge request.
238
+ # @param [Integer] discussion_id The ID of a discussion.
239
+ # @return [Gitlab::ObjectifiedHash] The merge request discussion.
240
+ def merge_request_discussion(project, merge_request_id, discussion_id)
241
+ get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}")
242
+ end
243
+
244
+ # Create new merge request discussion
245
+ #
246
+ # @example
247
+ # Gitlab.create_merge_request_discussion(5, 1, body: 'discuss')
248
+ # Gitlab.create_merge_request_discussion('gitlab', 1, body: 'discuss')
249
+ # @param [Integer, String] project The ID or name of a project.
250
+ # @param [Integer] id The ID of a merge request.
251
+ # @param [Hash] options A customizable set of options.
252
+ # * :body (String) The content of a discussion
253
+ # * :created_at (String) Date time string, ISO 8601 formatted, e.g. 2016-03-11T03:45:40Z
254
+ # * :position (Hash) Position when creating a diff note
255
+ # * :base_sha (String) Base commit SHA in the source branch
256
+ # * :start_sha (String) SHA referencing commit in target branch
257
+ # * :head_sha (String) SHA referencing HEAD of this merge request
258
+ # * :position_type (String) Type of the position reference', allowed values: 'text' or 'image'
259
+ # * :new_path (String) File path after change
260
+ # * :new_line (Integer) Line number after change (for 'text' diff notes)
261
+ # * :old_path (String) File path before change
262
+ # * :old_line (Integer) Line number before change (for 'text' diff notes)
263
+ # * :width (Integer) Width of the image (for 'image' diff notes)
264
+ # * :height (Integer) Height of the image (for 'image' diff notes)
265
+ # * :x (Integer) X coordinate (for 'image' diff notes)
266
+ # * :y (Integer) Y coordinate (for 'image' diff notes)
267
+ # @return [Gitlab::ObjectifiedHash] The created merge request discussion.
268
+ def create_merge_request_discussion(project, merge_request_id, options = {})
269
+ post("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions", body: options)
270
+ end
271
+
272
+ # Resolve a merge request discussion
273
+ #
274
+ # @example
275
+ # Gitlab.resolve_merge_request_discussion(5, 1, 1, true)
276
+ # Gitlab.resolve_merge_request_discussion('gitlab', 1, 1, false)
277
+ # @param [Integer, String] project The ID or name of a project.
278
+ # @param [Integer] id The ID of a merge request.
279
+ # @param [Integer] discussion_id The ID of a discussion.
280
+ # @param [Hash] options A customizable set of options.
281
+ # @option options [Boolean] :resolved Resolve/unresolve the discussion.
282
+ # @return [Gitlab::ObjectifiedHash] The merge request discussion.
283
+ def resolve_merge_request_discussion(project, merge_request_id, discussion_id, options)
284
+ put("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}", body: options)
285
+ end
286
+
287
+ # Add note to existing merge request discussion
288
+ #
289
+ # @example
290
+ # Gitlab.create_merge_request_discussion_note(5, 1, 1, note_id: 1, body: 'note')
291
+ # Gitlab.create_merge_request_discussion_note('gitlab', 1, 1, note_id: 1, body: 'note')
292
+ # @param [Integer, String] project The ID or name of a project.
293
+ # @param [Integer] id The ID of a merge request.
294
+ # @param [Integer] discussion_id The ID of a discussion.
295
+ # @param [Hash] options A customizable set of options.
296
+ # @option options [Integer] :note_id The ID of a discussion note.
297
+ # @option options [String] :body The content of a discussion.
298
+ # @option options [String] :created_at Date time string, ISO 8601 formatted, e.g. 2016-03-11T03:45:40Z.
299
+ # @return [Gitlab::ObjectifiedHash] The merge request discussion note.
300
+ def create_merge_request_discussion_note(project, merge_request_id, discussion_id, options)
301
+ post("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}/notes", body: options)
302
+ end
303
+
304
+ # Modify an existing merge request discussion note
305
+ #
306
+ # @example
307
+ # Gitlab.update_merge_request_discussion_note(5, 1, 1, 1, body: 'note')
308
+ # Gitlab.update_merge_request_discussion_note('gitlab', 1, 1, 1, body: 'note')
309
+ # @param [Integer, String] project The ID or name of a project.
310
+ # @param [Integer] id The ID of a merge request.
311
+ # @param [Integer] discussion_id The ID of a discussion.
312
+ # @param [Integer] note_id The ID of a discussion note.
313
+ # @param [Hash] options A customizable set of options.
314
+ # @option options [String] :body The content of a discussion.
315
+ # @option options [Boolean] :resolved Resolve/unresolve the note.
316
+ # @return [Gitlab::ObjectifiedHash] The merge request discussion note.
317
+ def update_merge_request_discussion_note(project, merge_request_id, discussion_id, note_id, options)
318
+ put("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}/notes/#{note_id}", body: options)
319
+ end
320
+
321
+ # Delete a merge request discussion note
322
+ #
323
+ # @example
324
+ # Gitlab.delete_merge_request_discussion_note(5, 1, 1, 1)
325
+ # Gitlab.delete_merge_request_discussion_note('gitlab', 1, 1, 1)
326
+ # @param [Integer, String] project The ID or name of a project.
327
+ # @param [Integer] id The ID of a merge request.
328
+ # @param [Integer] discussion_id The ID of a discussion.
329
+ # @param [Integer] note_id The ID of a discussion note.
330
+ # @return [Gitlab::ObjectifiedHash] An empty response.
331
+ def delete_merge_request_discussion_note(project, merge_request_id, discussion_id, note_id)
332
+ delete("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/discussions/#{discussion_id}/notes/#{note_id}")
333
+ end
334
+
335
+ # Delete a merge request
336
+ #
337
+ # @example
338
+ # Gitlab.delete_merge_request(5, 1)
339
+ # Gitlab.delete_merge_request('gitlab', 1)
340
+ # @param [Integer, String] project The ID or name of a project.
341
+ # @param [Integer] id The ID of a merge request.
342
+ # @return [Gitlab::ObjectifiedHash] An empty response.
343
+ def delete_merge_request(project, merge_request_id)
344
+ delete("/projects/#{url_encode project}/merge_requests/#{merge_request_id}")
345
+ end
346
+
347
+ # Gets a list of merge request diff versions
348
+ #
349
+ # @example
350
+ # Gitlab.merge_request_versions(5, 1)
351
+ # Gitlab.merge_request_versions('gitlab', 1)
352
+ # @param [Integer, String] project The ID or name of a project.
353
+ # @param [Integer] id The ID of a merge request.
354
+ # @return [Gitlab::ObjectifiedHash] A list of the merge request versions.
355
+ def merge_request_diff_versions(project, merge_request_id)
356
+ get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/versions")
357
+ end
358
+
359
+ # Gets the diff a single merge request diff version\
360
+ #
361
+ # @example
362
+ # Gitlab.merge_request_diff_version(5, 1, 1)
363
+ # Gitlab.merge_request_diff_version('gitlab', 1, 1)
364
+ # @param [Integer, String] project The ID or name of a project.
365
+ # @param [Integer] id The ID of a merge request.
366
+ # @param [Integer] id The ID of a merge request diff version.
367
+ # @return [Gitlab::ObjectifiedHash] Record of the specific diff
368
+ def merge_request_diff_version(project, merge_request_id, version_id)
369
+ get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/versions/#{version_id}")
370
+ end
371
+
372
+ # Rebase a merge request.
373
+ #
374
+ # @example
375
+ # Gitlab.rebase_merge_request(5, 42, { skip_ci: true })
376
+ #
377
+ # @param [Integer, String] project The ID or name of a project.
378
+ # @param [Integer] id The ID of a merge request.
379
+ # @param [Hash] options A customizable set of options.
380
+ # @option options [String] :skip_ci Set to true to skip creating a CI pipeline
381
+ # @return [Gitlab::ObjectifiedHash] Rebase progress status
382
+ def rebase_merge_request(project, id, options = {})
383
+ put("/projects/#{url_encode project}/merge_requests/#{id}/rebase", body: options)
384
+ end
385
+ end
386
+ end
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to milestones.
5
+ # @see https://docs.gitlab.com/ce/api/milestones.html
6
+ module Milestones
7
+ # Gets a list of project's milestones.
8
+ #
9
+ # @example
10
+ # Gitlab.milestones(5)
11
+ #
12
+ # @param [Integer, String] project The ID or name of a project.
13
+ # @param [Hash] options A customizable set of options.
14
+ # @option options [Integer] :page The page number.
15
+ # @option options [Integer] :per_page The number of results per page.
16
+ # @return [Array<Gitlab::ObjectifiedHash>]
17
+ def milestones(project, options = {})
18
+ get("/projects/#{url_encode project}/milestones", query: options)
19
+ end
20
+
21
+ # Gets a single milestone.
22
+ #
23
+ # @example
24
+ # Gitlab.milestone(5, 36)
25
+ #
26
+ # @param [Integer, String] project The ID or name of a project.
27
+ # @param [Integer] id The ID of a milestone.
28
+ # @return [Gitlab::ObjectifiedHash]
29
+ def milestone(project, id)
30
+ get("/projects/#{url_encode project}/milestones/#{id}")
31
+ end
32
+
33
+ # Gets the issues of a given milestone.
34
+ #
35
+ # @example
36
+ # Gitlab.milestone_issues(5, 2)
37
+ #
38
+ # @param [Integer, String] project The ID or name of a project.
39
+ # @param [Integer, String] milestone The ID of a milestone.
40
+ # @option options [Integer] :page The page number.
41
+ # @option options [Integer] :per_page The number of results per page.
42
+ # @return [Array<Gitlab::ObjectifiedHash>]
43
+ def milestone_issues(project, milestone, options = {})
44
+ get("/projects/#{url_encode project}/milestones/#{milestone}/issues", query: options)
45
+ end
46
+
47
+ # Gets the merge_requests of a given milestone.
48
+ #
49
+ # @example
50
+ # Gitlab.milestone_merge_requests(5, 2)
51
+ #
52
+ # @param [Integer, String] project The ID or name of a project.
53
+ # @param [Integer, String] milestone The ID of a milestone.
54
+ # @option options [Integer] :page The page number.
55
+ # @option options [Integer] :per_page The number of results per page.
56
+ # @return [Array<Gitlab::ObjectifiedHash>]
57
+ def milestone_merge_requests(project, milestone, options = {})
58
+ get("/projects/#{url_encode project}/milestones/#{milestone}/merge_requests", query: options)
59
+ end
60
+
61
+ # Creates a new milestone.
62
+ #
63
+ # @example
64
+ # Gitlab.create_milestone(5, 'v1.0')
65
+ #
66
+ # @param [Integer, String] project The ID or name of a project.
67
+ # @param [String] title The title of a milestone.
68
+ # @param [Hash] options A customizable set of options.
69
+ # @option options [String] :description The description of a milestone.
70
+ # @option options [String] :due_date The due date of a milestone.
71
+ # @return [Gitlab::ObjectifiedHash] Information about created milestone.
72
+ def create_milestone(project, title, options = {})
73
+ body = { title: title }.merge(options)
74
+ post("/projects/#{url_encode project}/milestones", body: body)
75
+ end
76
+
77
+ # Updates a milestone.
78
+ #
79
+ # @example
80
+ # Gitlab.edit_milestone(5, 2, { state_event: 'activate' })
81
+ #
82
+ # @param [Integer, String] project The ID or name of a project.
83
+ # @param [Integer] id The ID of a milestone.
84
+ # @param [Hash] options A customizable set of options.
85
+ # @option options [String] :title The title of a milestone.
86
+ # @option options [String] :description The description of a milestone.
87
+ # @option options [String] :due_date The due date of a milestone.
88
+ # @option options [String] :state_event The state of a milestone ('close' or 'activate').
89
+ # @return [Gitlab::ObjectifiedHash] Information about updated milestone.
90
+ def edit_milestone(project, id, options = {})
91
+ put("/projects/#{url_encode project}/milestones/#{id}", body: options)
92
+ end
93
+
94
+ # Delete a project milestone.
95
+ #
96
+ # @example
97
+ # Gitlab.delete_milestone(5, 2)
98
+ #
99
+ # @param [Integer, String] project The ID or name of a project.
100
+ # @param [Integer] id The ID of a milestone.
101
+ # @return [nil] This API call returns an empty response body.
102
+ def delete_milestone(project, id)
103
+ delete("/projects/#{url_encode project}/milestones/#{id}")
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to namespaces
5
+ # @see https://docs.gitlab.com/ce/api/namespaces.html
6
+ module Namespaces
7
+ # Gets a list of namespaces.
8
+ # @see https://docs.gitlab.com/ce/api/namespaces.html#list-namespaces
9
+ #
10
+ # @example
11
+ # Gitlab.namespaces
12
+ #
13
+ # @param [Hash] options A customizable set of options.
14
+ # @options options [Integer] :page The page number.
15
+ # @options options [Integer] :per_page The number of results per page.
16
+ # @options opttion [String] :search The string to search for.
17
+ # @return [Array<Gitlab::ObjectifiedHash>]
18
+ def namespaces(options = {})
19
+ get('/namespaces', query: options)
20
+ end
21
+ end
22
+ end