gitlab 4.2.0 → 4.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +4 -2
  3. data/LICENSE.txt +1 -1
  4. data/README.md +96 -25
  5. data/exe/gitlab +5 -1
  6. data/lib/gitlab/api.rb +8 -3
  7. data/lib/gitlab/cli.rb +15 -15
  8. data/lib/gitlab/cli_helpers.rb +63 -61
  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 +5 -3
  13. data/lib/gitlab/client/boards.rb +62 -4
  14. data/lib/gitlab/client/branches.rb +53 -14
  15. data/lib/gitlab/client/broadcast_messages.rb +75 -0
  16. data/lib/gitlab/client/build_variables.rb +78 -9
  17. data/lib/gitlab/client/builds.rb +13 -11
  18. data/lib/gitlab/client/commits.rb +89 -19
  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 +5 -3
  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 +197 -17
  31. data/lib/gitlab/client/issue_links.rb +48 -0
  32. data/lib/gitlab/client/issues.rb +98 -4
  33. data/lib/gitlab/client/jobs.rb +96 -8
  34. data/lib/gitlab/client/keys.rb +13 -0
  35. data/lib/gitlab/client/labels.rb +7 -5
  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 +237 -9
  40. data/lib/gitlab/client/milestones.rb +19 -5
  41. data/lib/gitlab/client/namespaces.rb +4 -2
  42. data/lib/gitlab/client/notes.rb +58 -12
  43. data/lib/gitlab/client/pipeline_schedules.rb +147 -0
  44. data/lib/gitlab/client/pipeline_triggers.rb +12 -10
  45. data/lib/gitlab/client/pipelines.rb +40 -3
  46. data/lib/gitlab/client/project_badges.rb +85 -0
  47. data/lib/gitlab/client/project_clusters.rb +83 -0
  48. data/lib/gitlab/client/project_release_links.rb +76 -0
  49. data/lib/gitlab/client/project_releases.rb +79 -0
  50. data/lib/gitlab/client/projects.rb +280 -47
  51. data/lib/gitlab/client/protected_tags.rb +59 -0
  52. data/lib/gitlab/client/remote_mirrors.rb +51 -0
  53. data/lib/gitlab/client/repositories.rb +60 -6
  54. data/lib/gitlab/client/repository_files.rb +23 -5
  55. data/lib/gitlab/client/repository_submodules.rb +27 -0
  56. data/lib/gitlab/client/resource_label_events.rb +82 -0
  57. data/lib/gitlab/client/resource_state_events.rb +57 -0
  58. data/lib/gitlab/client/runners.rb +111 -15
  59. data/lib/gitlab/client/search.rb +66 -0
  60. data/lib/gitlab/client/services.rb +4 -1
  61. data/lib/gitlab/client/sidekiq.rb +39 -0
  62. data/lib/gitlab/client/snippets.rb +8 -4
  63. data/lib/gitlab/client/system_hooks.rb +9 -7
  64. data/lib/gitlab/client/tags.rb +15 -14
  65. data/lib/gitlab/client/templates.rb +100 -0
  66. data/lib/gitlab/client/todos.rb +7 -5
  67. data/lib/gitlab/client/user_snippets.rb +114 -0
  68. data/lib/gitlab/client/users.rb +166 -30
  69. data/lib/gitlab/client/versions.rb +18 -0
  70. data/lib/gitlab/client/wikis.rb +79 -0
  71. data/lib/gitlab/client.rb +49 -12
  72. data/lib/gitlab/configuration.rb +8 -6
  73. data/lib/gitlab/error.rb +74 -5
  74. data/lib/gitlab/file_response.rb +5 -3
  75. data/lib/gitlab/help.rb +19 -20
  76. data/lib/gitlab/objectified_hash.rb +27 -10
  77. data/lib/gitlab/page_links.rb +11 -9
  78. data/lib/gitlab/paginated_response.rb +37 -24
  79. data/lib/gitlab/request.rb +42 -53
  80. data/lib/gitlab/shell.rb +11 -12
  81. data/lib/gitlab/shell_history.rb +11 -13
  82. data/lib/gitlab/version.rb +3 -1
  83. data/lib/gitlab.rb +19 -8
  84. metadata +50 -395
  85. data/.gitignore +0 -22
  86. data/.travis.yml +0 -8
  87. data/CONTRIBUTING.md +0 -195
  88. data/Gemfile +0 -4
  89. data/Rakefile +0 -9
  90. data/bin/console +0 -10
  91. data/bin/setup +0 -6
  92. data/gitlab.gemspec +0 -31
  93. data/spec/fixtures/board_list.json +0 -1
  94. data/spec/fixtures/board_lists.json +0 -1
  95. data/spec/fixtures/boards.json +0 -1
  96. data/spec/fixtures/branch.json +0 -1
  97. data/spec/fixtures/branch_delete.json +0 -3
  98. data/spec/fixtures/branches.json +0 -1
  99. data/spec/fixtures/build.json +0 -38
  100. data/spec/fixtures/build_artifacts.json +0 -0
  101. data/spec/fixtures/build_cancel.json +0 -24
  102. data/spec/fixtures/build_erase.json +0 -24
  103. data/spec/fixtures/build_retry.json +0 -24
  104. data/spec/fixtures/builds.json +0 -78
  105. data/spec/fixtures/builds_commits.json +0 -64
  106. data/spec/fixtures/compare_merge_request_diff.json +0 -31
  107. data/spec/fixtures/empty.json +0 -0
  108. data/spec/fixtures/environment.json +0 -6
  109. data/spec/fixtures/environments.json +0 -14
  110. data/spec/fixtures/error_already_exists.json +0 -1
  111. data/spec/fixtures/error_project_not_found.json +0 -1
  112. data/spec/fixtures/get_repository_file.json +0 -1
  113. data/spec/fixtures/group.json +0 -60
  114. data/spec/fixtures/group_create.json +0 -1
  115. data/spec/fixtures/group_create_with_description.json +0 -1
  116. data/spec/fixtures/group_delete.json +0 -1
  117. data/spec/fixtures/group_member.json +0 -1
  118. data/spec/fixtures/group_member_delete.json +0 -1
  119. data/spec/fixtures/group_member_edit.json +0 -1
  120. data/spec/fixtures/group_members.json +0 -1
  121. data/spec/fixtures/group_projects.json +0 -44
  122. data/spec/fixtures/group_search.json +0 -2
  123. data/spec/fixtures/groups.json +0 -2
  124. data/spec/fixtures/issue.json +0 -1
  125. data/spec/fixtures/issue_award_emoji.json +0 -16
  126. data/spec/fixtures/issue_award_emojis.json +0 -34
  127. data/spec/fixtures/issues.json +0 -1
  128. data/spec/fixtures/job.json +0 -43
  129. data/spec/fixtures/job_trace.json +0 -1
  130. data/spec/fixtures/jobs.json +0 -91
  131. data/spec/fixtures/key.json +0 -1
  132. data/spec/fixtures/keys.json +0 -1
  133. data/spec/fixtures/label.json +0 -1
  134. data/spec/fixtures/label_unsubscribe.json +0 -1
  135. data/spec/fixtures/labels.json +0 -1
  136. data/spec/fixtures/merge_request.json +0 -1
  137. data/spec/fixtures/merge_request_award_emoji.json +0 -16
  138. data/spec/fixtures/merge_request_award_emojis.json +0 -34
  139. data/spec/fixtures/merge_request_changes.json +0 -1
  140. data/spec/fixtures/merge_request_closes_issues.json +0 -1
  141. data/spec/fixtures/merge_request_comment.json +0 -1
  142. data/spec/fixtures/merge_request_comments.json +0 -1
  143. data/spec/fixtures/merge_request_commits.json +0 -1
  144. data/spec/fixtures/merge_requests.json +0 -1
  145. data/spec/fixtures/milestone.json +0 -1
  146. data/spec/fixtures/milestone_issues.json +0 -1
  147. data/spec/fixtures/milestone_merge_requests.json +0 -1
  148. data/spec/fixtures/milestones.json +0 -1
  149. data/spec/fixtures/namespaces.json +0 -1
  150. data/spec/fixtures/note.json +0 -1
  151. data/spec/fixtures/note_award_emoji.json +0 -16
  152. data/spec/fixtures/note_award_emojis.json +0 -18
  153. data/spec/fixtures/notes.json +0 -1
  154. data/spec/fixtures/pipeline.json +0 -23
  155. data/spec/fixtures/pipeline_cancel.json +0 -23
  156. data/spec/fixtures/pipeline_create.json +0 -23
  157. data/spec/fixtures/pipeline_jobs.json +0 -91
  158. data/spec/fixtures/pipeline_retry.json +0 -23
  159. data/spec/fixtures/pipelines.json +0 -48
  160. data/spec/fixtures/project.json +0 -1
  161. data/spec/fixtures/project_commit.json +0 -13
  162. data/spec/fixtures/project_commit_comment.json +0 -1
  163. data/spec/fixtures/project_commit_comments.json +0 -1
  164. data/spec/fixtures/project_commit_create.json +0 -22
  165. data/spec/fixtures/project_commit_diff.json +0 -10
  166. data/spec/fixtures/project_commit_status.json +0 -42
  167. data/spec/fixtures/project_commits.json +0 -1
  168. data/spec/fixtures/project_edit.json +0 -21
  169. data/spec/fixtures/project_events.json +0 -1
  170. data/spec/fixtures/project_for_user.json +0 -1
  171. data/spec/fixtures/project_fork.json +0 -50
  172. data/spec/fixtures/project_fork_link.json +0 -1
  173. data/spec/fixtures/project_forked_for_user.json +0 -50
  174. data/spec/fixtures/project_hook.json +0 -1
  175. data/spec/fixtures/project_hooks.json +0 -1
  176. data/spec/fixtures/project_issues.json +0 -1
  177. data/spec/fixtures/project_key.json +0 -6
  178. data/spec/fixtures/project_keys.json +0 -6
  179. data/spec/fixtures/project_runner_enable.json +0 -7
  180. data/spec/fixtures/project_runners.json +0 -16
  181. data/spec/fixtures/project_search.json +0 -1
  182. data/spec/fixtures/project_star.json +0 -44
  183. data/spec/fixtures/project_tag_annotated.json +0 -1
  184. data/spec/fixtures/project_tag_lightweight.json +0 -1
  185. data/spec/fixtures/project_tags.json +0 -1
  186. data/spec/fixtures/project_unstar.json +0 -44
  187. data/spec/fixtures/project_update_commit_status.json +0 -20
  188. data/spec/fixtures/projects.json +0 -1
  189. data/spec/fixtures/push_rule.json +0 -1
  190. data/spec/fixtures/raw_file.json +0 -2
  191. data/spec/fixtures/release_create.json +0 -1
  192. data/spec/fixtures/release_update.json +0 -1
  193. data/spec/fixtures/repository_file.json +0 -1
  194. data/spec/fixtures/run_trigger.json +0 -1
  195. data/spec/fixtures/runner.json +0 -26
  196. data/spec/fixtures/runner_delete.json +0 -7
  197. data/spec/fixtures/runner_edit.json +0 -26
  198. data/spec/fixtures/runners.json +0 -16
  199. data/spec/fixtures/runners_all.json +0 -30
  200. data/spec/fixtures/service.json +0 -1
  201. data/spec/fixtures/session.json +0 -1
  202. data/spec/fixtures/shell_history.json +0 -2
  203. data/spec/fixtures/snippet.json +0 -1
  204. data/spec/fixtures/snippet_award_emoji.json +0 -16
  205. data/spec/fixtures/snippet_award_emojis.json +0 -34
  206. data/spec/fixtures/snippet_content.json +0 -3
  207. data/spec/fixtures/snippets.json +0 -1
  208. data/spec/fixtures/system_hook.json +0 -1
  209. data/spec/fixtures/system_hooks.json +0 -1
  210. data/spec/fixtures/tag.json +0 -1
  211. data/spec/fixtures/tag_create.json +0 -1
  212. data/spec/fixtures/tag_create_with_description.json +0 -1
  213. data/spec/fixtures/tag_delete.json +0 -1
  214. data/spec/fixtures/tags.json +0 -1
  215. data/spec/fixtures/team_member.json +0 -1
  216. data/spec/fixtures/team_members.json +0 -1
  217. data/spec/fixtures/todo.json +0 -73
  218. data/spec/fixtures/todos.json +0 -148
  219. data/spec/fixtures/tree.json +0 -1
  220. data/spec/fixtures/trigger.json +0 -10
  221. data/spec/fixtures/triggers.json +0 -12
  222. data/spec/fixtures/user.json +0 -1
  223. data/spec/fixtures/user_block_unblock.json +0 -1
  224. data/spec/fixtures/user_email.json +0 -1
  225. data/spec/fixtures/user_emails.json +0 -1
  226. data/spec/fixtures/user_search.json +0 -1
  227. data/spec/fixtures/users.json +0 -1
  228. data/spec/fixtures/variable.json +0 -4
  229. data/spec/fixtures/variables.json +0 -10
  230. data/spec/gitlab/cli_helpers_spec.rb +0 -57
  231. data/spec/gitlab/cli_spec.rb +0 -119
  232. data/spec/gitlab/client/award_emojis_spec.rb +0 -391
  233. data/spec/gitlab/client/boards_spec.rb +0 -94
  234. data/spec/gitlab/client/branches_spec.rb +0 -116
  235. data/spec/gitlab/client/build_variables_spec.rb +0 -86
  236. data/spec/gitlab/client/builds_spec.rb +0 -148
  237. data/spec/gitlab/client/client_spec.rb +0 -11
  238. data/spec/gitlab/client/commits_spec.rb +0 -168
  239. data/spec/gitlab/client/environments_spec.rb +0 -132
  240. data/spec/gitlab/client/groups_spec.rb +0 -195
  241. data/spec/gitlab/client/issues_spec.rb +0 -186
  242. data/spec/gitlab/client/jobs_spec.rb +0 -135
  243. data/spec/gitlab/client/keys_spec.rb +0 -19
  244. data/spec/gitlab/client/labels_spec.rb +0 -100
  245. data/spec/gitlab/client/merge_requests_spec.rb +0 -224
  246. data/spec/gitlab/client/milestones_spec.rb +0 -98
  247. data/spec/gitlab/client/namespaces_spec.rb +0 -22
  248. data/spec/gitlab/client/notes_spec.rb +0 -333
  249. data/spec/gitlab/client/pipeline_triggers_spec.rb +0 -157
  250. data/spec/gitlab/client/pipelines_spec.rb +0 -95
  251. data/spec/gitlab/client/projects_spec.rb +0 -613
  252. data/spec/gitlab/client/repositories_spec.rb +0 -94
  253. data/spec/gitlab/client/repository_files_spec.rb +0 -95
  254. data/spec/gitlab/client/runners_spec.rb +0 -185
  255. data/spec/gitlab/client/services_spec.rb +0 -55
  256. data/spec/gitlab/client/snippets_spec.rb +0 -100
  257. data/spec/gitlab/client/system_hooks_spec.rb +0 -69
  258. data/spec/gitlab/client/tags_spec.rb +0 -109
  259. data/spec/gitlab/client/todos_spec.rb +0 -45
  260. data/spec/gitlab/client/users_spec.rb +0 -418
  261. data/spec/gitlab/error_spec.rb +0 -45
  262. data/spec/gitlab/file_response_spec.rb +0 -33
  263. data/spec/gitlab/help_spec.rb +0 -46
  264. data/spec/gitlab/objectified_hash_spec.rb +0 -48
  265. data/spec/gitlab/page_links_spec.rb +0 -16
  266. data/spec/gitlab/paginated_response_spec.rb +0 -60
  267. data/spec/gitlab/request_spec.rb +0 -73
  268. data/spec/gitlab/shell_history_spec.rb +0 -53
  269. data/spec/gitlab/shell_spec.rb +0 -80
  270. data/spec/gitlab_spec.rb +0 -97
  271. data/spec/spec_helper.rb +0 -74
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Gitlab::Client
2
4
  # Defines methods related to system hooks.
3
5
  # @see https://docs.gitlab.com/ce/api/system_hooks.html
@@ -12,10 +14,10 @@ class Gitlab::Client
12
14
  # @option options [Integer] :page The page number.
13
15
  # @option options [Integer] :per_page The number of results per page.
14
16
  # @return [Array<Gitlab::ObjectifiedHash>]
15
- def hooks(options={})
16
- get("/hooks", query: options)
17
+ def hooks(options = {})
18
+ get('/hooks', query: options)
17
19
  end
18
- alias_method :system_hooks, :hooks
20
+ alias system_hooks hooks
19
21
 
20
22
  # Adds a new system hook.
21
23
  #
@@ -29,9 +31,9 @@ class Gitlab::Client
29
31
  # @option options [boolean] :enable_ssl_verification `false` will cause Gitlab to ignore invalid/unsigned certificate errors (default is `true`)
30
32
  # @return [Gitlab::ObjectifiedHash]
31
33
  def add_hook(url, options = {})
32
- post("/hooks", body: options.merge(url: url))
34
+ post('/hooks', body: options.merge(url: url))
33
35
  end
34
- alias_method :add_system_hook, :add_hook
36
+ alias add_system_hook add_hook
35
37
 
36
38
  # Tests a system hook.
37
39
  #
@@ -44,7 +46,7 @@ class Gitlab::Client
44
46
  def hook(id)
45
47
  get("/hooks/#{id}")
46
48
  end
47
- alias_method :system_hook, :hook
49
+ alias system_hook hook
48
50
 
49
51
  # Deletes a new system hook.
50
52
  #
@@ -57,6 +59,6 @@ class Gitlab::Client
57
59
  def delete_hook(id)
58
60
  delete("/hooks/#{id}")
59
61
  end
60
- alias_method :delete_system_hook, :delete_hook
62
+ alias delete_system_hook delete_hook
61
63
  end
62
64
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Gitlab::Client
2
4
  # Defines methods related to tags.
3
5
  # @see https://docs.gitlab.com/ce/api/tags.html
@@ -12,10 +14,10 @@ class Gitlab::Client
12
14
  # @option options [Integer] :page The page number.
13
15
  # @option options [Integer] :per_page The number of results per page.
14
16
  # @return [Array<Gitlab::ObjectifiedHash>]
15
- def tags(project, options={})
17
+ def tags(project, options = {})
16
18
  get("/projects/#{url_encode project}/repository/tags", query: options)
17
19
  end
18
- alias_method :repo_tags, :tags
20
+ alias repo_tags tags
19
21
 
20
22
  # Creates a new project repository tag.
21
23
  #
@@ -29,10 +31,10 @@ class Gitlab::Client
29
31
  # @param [String] message Optional message for tag, creates annotated tag if specified.
30
32
  # @param [String] description Optional release notes for tag.
31
33
  # @return [Gitlab::ObjectifiedHash]
32
- def create_tag(project, tag_name, ref, message='', description=nil)
33
- post("/projects/#{url_encode project}/repository/tags", body: { tag_name: tag_name, ref: ref, message: message, description: description })
34
+ def create_tag(project, tag_name, ref, message = '', description = nil)
35
+ post("/projects/#{url_encode project}/repository/tags", body: { tag_name: tag_name, ref: ref, message: message, release_description: description })
34
36
  end
35
- alias_method :repo_create_tag, :create_tag
37
+ alias repo_create_tag create_tag
36
38
 
37
39
  # Gets information about a repository tag.
38
40
  #
@@ -44,9 +46,9 @@ class Gitlab::Client
44
46
  # @param [String] tag The name of the tag.
45
47
  # @return [Gitlab::ObjectifiedHash]
46
48
  def tag(project, tag)
47
- get("/projects/#{url_encode project}/repository/tags/#{tag}")
49
+ get("/projects/#{url_encode project}/repository/tags/#{url_encode tag}")
48
50
  end
49
- alias_method :repo_tag, :tag
51
+ alias repo_tag tag
50
52
 
51
53
  # Deletes a repository tag. Requires Gitlab >= 6.8.x
52
54
  #
@@ -58,9 +60,9 @@ class Gitlab::Client
58
60
  # @param [String] tag The name of the tag to delete
59
61
  # @return [Gitlab::ObjectifiedHash]
60
62
  def delete_tag(project, tag)
61
- delete("/projects/#{url_encode project}/repository/tags/#{tag}")
63
+ delete("/projects/#{url_encode project}/repository/tags/#{url_encode tag}")
62
64
  end
63
- alias_method :repo_delete_tag, :delete_tag
65
+ alias repo_delete_tag delete_tag
64
66
 
65
67
  # Adds release notes to an existing repository tag. Requires Gitlab >= 8.2.0
66
68
  #
@@ -73,9 +75,9 @@ class Gitlab::Client
73
75
  # @param [String] description Release notes with markdown support
74
76
  # @return [Gitlab::ObjectifiedHash]
75
77
  def create_release(project, tag, description)
76
- post("/projects/#{url_encode project}/repository/tags/#{tag}/release", body: { description: description })
78
+ post("/projects/#{url_encode project}/repository/tags/#{url_encode tag}/release", body: { description: description })
77
79
  end
78
- alias_method :repo_create_release, :create_release
80
+ alias repo_create_release create_release
79
81
 
80
82
  # Updates the release notes of a given release. Requires Gitlab >= 8.2.0
81
83
  #
@@ -88,9 +90,8 @@ class Gitlab::Client
88
90
  # @param [String] description Release notes with markdown support
89
91
  # @return [Gitlab::ObjectifiedHash]
90
92
  def update_release(project, tag, description)
91
- put("/projects/#{url_encode project}/repository/tags/#{tag}/release", body: { description: description })
93
+ put("/projects/#{url_encode project}/repository/tags/#{url_encode tag}/release", body: { description: description })
92
94
  end
93
- alias_method :repo_update_release, :update_release
94
-
95
+ alias repo_update_release update_release
95
96
  end
96
97
  end
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to templates.
5
+ # @see https://docs.gitlab.com/ce/api/templates/dockerfiles.html
6
+ # @see https://docs.gitlab.com/ce/api/templates/gitignores.html
7
+ # @see https://docs.gitlab.com/ce/api/templates/gitlab_ci_ymls.html
8
+ # @see https://docs.gitlab.com/ce/api/templates/licenses.html
9
+ module Templates
10
+ # Get all Dockerfile templates.
11
+ #
12
+ # @example
13
+ # Gitlab.dockerfile_templates
14
+ #
15
+ # @return [Array<Gitlab::ObjectifiedHash>]
16
+ def dockerfile_templates
17
+ get('/templates/dockerfiles')
18
+ end
19
+
20
+ # Get a single Dockerfile template.
21
+ #
22
+ # @example
23
+ # Gitlab.dockerfile_template('Binary')
24
+ #
25
+ # @param [String] key The key of the Dockerfile template
26
+ # @return [Gitlab::ObjectifiedHash]
27
+ def dockerfile_template(key)
28
+ get("/templates/dockerfiles/#{key}")
29
+ end
30
+
31
+ # Get all gitignore templates.
32
+ #
33
+ # @example
34
+ # Gitlab.gitignore_templates
35
+ #
36
+ # @return [Array<Gitlab::ObjectifiedHash>]
37
+ def gitignore_templates
38
+ get('/templates/gitignores')
39
+ end
40
+
41
+ # Get a single gitignore template.
42
+ #
43
+ # @example
44
+ # Gitlab.gitignore_template('Ruby')
45
+ #
46
+ # @param [String] key The key of the gitignore template
47
+ # @return [Gitlab::ObjectifiedHash]
48
+ def gitignore_template(key)
49
+ get("/templates/gitignores/#{key}")
50
+ end
51
+
52
+ # Get all `gitlab_ci.yml` templates.
53
+ #
54
+ # @example
55
+ # Gitlab.gitlab_ci_yml_templates
56
+ #
57
+ # @return [Array<Gitlab::ObjectifiedHash>]
58
+ def gitlab_ci_yml_templates
59
+ get('/templates/gitlab_ci_ymls')
60
+ end
61
+
62
+ # Get a single `gitlab_ci.yml` template.
63
+ #
64
+ # @example
65
+ # Gitlab.gitlab_ci_yml_template('Ruby')
66
+ #
67
+ # @param [String] key The key of the gitlab_ci_yml template
68
+ # @return [Gitlab::ObjectifiedHash]
69
+ def gitlab_ci_yml_template(key)
70
+ get("/templates/gitlab_ci_ymls/#{key}")
71
+ end
72
+
73
+ # Get all license templates.
74
+ #
75
+ # @example
76
+ # Gitlab.license_templates
77
+ # Gitlab.license_templates(popular: true)
78
+ #
79
+ # @param [Hash] options A customizable set of options.
80
+ # @option options [Boolean] popular(optional) If passed, returns only popular licenses.
81
+ # @return [Array<Gitlab::ObjectifiedHash>]
82
+ def license_templates(options = {})
83
+ get('/templates/licenses', query: options)
84
+ end
85
+
86
+ # Get a single license template. You can pass parameters to replace the license placeholder.
87
+ #
88
+ # @example
89
+ # Gitlab.license_template('Ruby')
90
+ #
91
+ # @param [String] key The key of the license template
92
+ # @param [Hash] options A customizable set of options.
93
+ # @option options [String] project(optional) The copyrighted project name.
94
+ # @option options [String] fullname(optional) The full-name of the copyright holder
95
+ # @return [Gitlab::ObjectifiedHash]
96
+ def license_template(key, options = {})
97
+ get("/templates/licenses/#{key}", query: options)
98
+ end
99
+ end
100
+ end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Gitlab::Client
2
4
  # Defines methods related to todos
3
- # @see https://docs.gitlab.com/ce/api/todos.html
5
+ # @see https://docs.gitlab.com/ce/api/todos.html
4
6
  module Todos
5
7
  # Gets a list of todos.
6
8
  #
@@ -16,8 +18,8 @@ class Gitlab::Client
16
18
  # @option options [Integer] :state The state of the todo. Can be either `pending` or `done`
17
19
  # @option options [Integer] :type The type of a todo. Can be either `Issue` or `MergeRequest`
18
20
  # @return [Array<Gitlab::ObjectifiedHash>]
19
- def todos(options={})
20
- get("/todos", query: options)
21
+ def todos(options = {})
22
+ get('/todos', query: options)
21
23
  end
22
24
 
23
25
  # Marks a single pending todo for the current user as done.
@@ -38,7 +40,7 @@ class Gitlab::Client
38
40
  #
39
41
  # @return [void] This API call returns an empty response body.
40
42
  def mark_all_todos_as_done
41
- post("/todos/mark_as_done")
43
+ post('/todos/mark_as_done')
42
44
  end
43
45
  end
44
- end
46
+ end
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to user snippets.
5
+ # @see https://docs.gitlab.com/ce/api/snippets.html
6
+ module UserSnippets
7
+ # Get a list of the snippets of the current user.
8
+ #
9
+ # @example
10
+ # Gitlab.user_snippets
11
+ #
12
+ # @return [Array<Gitlab::ObjectifiedHash>] List of snippets of current user
13
+ def user_snippets
14
+ get('/snippets')
15
+ end
16
+
17
+ # Get a single snippet.
18
+ #
19
+ # @example
20
+ # Gitlab.user_snippet(1)
21
+ #
22
+ # @param [Integer] id ID of snippet to retrieve.
23
+ # @return [Gitlab::ObjectifiedHash] Information about the user snippet
24
+ def user_snippet(id)
25
+ get("/snippets/#{id}")
26
+ end
27
+
28
+ # Get raw contents of a single snippet.
29
+ #
30
+ # @example
31
+ # Gitlab.user_snippet_raw(1)
32
+ #
33
+ # @param [Integer] id ID of snippet to retrieve.
34
+ # @return [String] User snippet text
35
+ def user_snippet_raw(id)
36
+ get("/snippets/#{id}/raw",
37
+ format: nil,
38
+ headers: { Accept: 'text/plain' },
39
+ parser: ::Gitlab::Request::Parser)
40
+ end
41
+
42
+ # Create a new snippet.
43
+ #
44
+ # @example
45
+ # Gitlab.create_user_snippet({ title: 'REST', file_name: 'api.rb', content: 'some code', description: 'Hello World snippet', visibility: 'public'})
46
+ #
47
+ # @param [Hash] options A customizable set of options.
48
+ # @option options [String] :title (required) Title of a snippet.
49
+ # @option options [String] :file_name (required) Name of a snippet file.
50
+ # @option options [String] :content (required) Content of a snippet.
51
+ # @option options [String] :description (optional) Description of a snippet.
52
+ # @option options [String] :visibility (optional) visibility of a snippet.
53
+ # @return [Gitlab::ObjectifiedHash] Information about created snippet.
54
+ def create_user_snippet(options = {})
55
+ post('/snippets', body: options)
56
+ end
57
+
58
+ # Update an existing snippet.
59
+ #
60
+ # @example
61
+ # Gitlab.edit_user_snippet(34, { file_name: 'README.txt' })
62
+ # Gitlab.edit_user_snippet(34, { file_name: 'README.txt', title: 'New title' })
63
+ #
64
+ # @param [Integer] id ID of snippet to update.
65
+ # @param [Hash] options A customizable set of options.
66
+ # @option options [String] :title (optional) Title of a snippet.
67
+ # @option options [String] :file_name (optional) Name of a snippet file.
68
+ # @option options [String] :content (optional) Content of a snippet.
69
+ # @option options [String] :description (optional) Description of a snippet.
70
+ # @option options [String] :visibility (optional) visibility of a snippet.
71
+ # @return [Gitlab::ObjectifiedHash] Information about updated snippet.
72
+ def edit_user_snippet(id, options = {})
73
+ put("/snippets/#{id}", body: options)
74
+ end
75
+
76
+ # Delete an existing snippet.
77
+ #
78
+ # @example
79
+ # Gitlab.delete_user_snippet(14)
80
+ #
81
+ # @param [Integer] id ID of snippet to delete.
82
+ # @return [void] This API call returns an empty response body.
83
+ def delete_user_snippet(id)
84
+ delete("/snippets/#{id}")
85
+ end
86
+
87
+ # List all public snippets.
88
+ #
89
+ # @example
90
+ # Gitlab.public_snippets
91
+ # Gitlab.public_snippets(per_page: 2, page: 1)
92
+ #
93
+ # @param [Hash] options A customizable set of options.
94
+ # @option options [String] :per_page (optional) Number of snippets to return per page.
95
+ # @option options [String] :page (optional) Page to retrieve.
96
+ #
97
+ # @return [Array<Gitlab::ObjectifiedHash>] List of all public snippets
98
+ def public_snippets(options = {})
99
+ get('/snippets/public', query: options)
100
+ end
101
+
102
+ # Get user agent details for a snippet.
103
+ #
104
+ # @example
105
+ # Gitlab.snippet_user_agent_details(1)
106
+ #
107
+ # @param [Integer] id ID of snippet to delete.
108
+ #
109
+ # @return [Array<Gitlab::ObjectifiedHash>] Details of the user agent
110
+ def snippet_user_agent_details(id)
111
+ get("/snippets/#{id}/user_agent_detail")
112
+ end
113
+ end
114
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Gitlab::Client
2
4
  # Defines methods related to users.
3
5
  # @see https://docs.gitlab.com/ce/api/users.html
@@ -12,8 +14,8 @@ class Gitlab::Client
12
14
  # @option options [Integer] :page The page number.
13
15
  # @option options [Integer] :per_page The number of results per page.
14
16
  # @return [Array<Gitlab::ObjectifiedHash>]
15
- def users(options={})
16
- get("/users", query: options)
17
+ def users(options = {})
18
+ get('/users', query: options)
17
19
  end
18
20
 
19
21
  # Gets information about a user.
@@ -25,8 +27,8 @@ class Gitlab::Client
25
27
  #
26
28
  # @param [Integer] id The ID of a user.
27
29
  # @return [Gitlab::ObjectifiedHash]
28
- def user(id=nil)
29
- id.to_i.zero? ? get("/user") : get("/users/#{id}")
30
+ def user(id = nil)
31
+ id.to_i.zero? ? get('/user') : get("/users/#{id}")
30
32
  end
31
33
 
32
34
  # Creates a new user.
@@ -35,11 +37,11 @@ class Gitlab::Client
35
37
  # @example
36
38
  # Gitlab.create_user('joe@foo.org', 'secret', 'joe', { name: 'Joe Smith' })
37
39
  # or
38
- # Gitlab.create_user('joe@foo.org', 'secret')
40
+ # Gitlab.create_user('joe@foo.org', 'secret', 'joe')
39
41
  #
40
- # @param [String] email The email of a user.
41
- # @param [String] password The password of a user.
42
- # @param [String] username The username of a user.
42
+ # @param [String] email(required) The email of a user.
43
+ # @param [String] password(required) The password of a user.
44
+ # @param [String] username(required) The username of a user.
43
45
  # @param [Hash] options A customizable set of options.
44
46
  # @option options [String] :name The name of a user. Defaults to email.
45
47
  # @option options [String] :skype The skype of a user.
@@ -48,12 +50,10 @@ class Gitlab::Client
48
50
  # @option options [Integer] :projects_limit The limit of projects for a user.
49
51
  # @return [Gitlab::ObjectifiedHash] Information about created user.
50
52
  def create_user(*args)
51
- options = Hash === args.last ? args.pop : {}
52
- if args[2]
53
- body = { email: args[0], password: args[1], username: args[2] }
54
- else
55
- body = { email: args[0], password: args[1], name: args[0] }
56
- end
53
+ options = args.last.is_a?(Hash) ? args.pop : {}
54
+ raise ArgumentError, 'Missing required parameters' unless args[2]
55
+
56
+ body = { email: args[0], password: args[1], username: args[2], name: args[0] }
57
57
  body.merge!(options)
58
58
  post('/users', body: body)
59
59
  end
@@ -73,7 +73,7 @@ class Gitlab::Client
73
73
  # @option options [String] :twitter The twitter of a user.
74
74
  # @option options [Integer] :projects_limit The limit of projects for a user.
75
75
  # @return [Gitlab::ObjectifiedHash] Information about created user.
76
- def edit_user(user_id, options={})
76
+ def edit_user(user_id, options = {})
77
77
  put("/users/#{user_id}", body: options)
78
78
  end
79
79
 
@@ -120,7 +120,21 @@ class Gitlab::Client
120
120
  # @return [Gitlab::ObjectifiedHash]
121
121
  # @note This method doesn't require private_token to be set.
122
122
  def session(email, password)
123
- post("/session", body: { email: email, password: password }, unauthenticated: true)
123
+ post('/session', body: { email: email, password: password }, unauthenticated: true)
124
+ end
125
+
126
+ # Gets a list of user activities (for admin access only).
127
+ #
128
+ # @example
129
+ # Gitlab.activities
130
+ #
131
+ # @param [Hash] options A customizable set of options.
132
+ # @option options [Integer] :page The page number.
133
+ # @option options [Integer] :per_page The number of results per page.
134
+ # @option options [String] :from The start date for paginated results.
135
+ # @return [Array<Gitlab::ObjectifiedHash>]
136
+ def activities(options = {})
137
+ get('/user/activities', query: options)
124
138
  end
125
139
 
126
140
  # Gets a list of user's SSH keys.
@@ -134,10 +148,10 @@ class Gitlab::Client
134
148
  # @option options [Integer] :per_page The number of results per page.
135
149
  # @option options [Integer] :user_id The ID of the user to retrieve the keys for.
136
150
  # @return [Array<Gitlab::ObjectifiedHash>]
137
- def ssh_keys(options={})
151
+ def ssh_keys(options = {})
138
152
  user_id = options.delete :user_id
139
153
  if user_id.to_i.zero?
140
- get("/user/keys", query: options)
154
+ get('/user/keys', query: options)
141
155
  else
142
156
  get("/users/#{user_id}/keys", query: options)
143
157
  end
@@ -161,9 +175,16 @@ class Gitlab::Client
161
175
  #
162
176
  # @param [String] title The title of an SSH key.
163
177
  # @param [String] key The SSH key body.
178
+ # @param [Hash] options A customizable set of options.
179
+ # @option options [Integer] :user_id id of the user to associate the key with
164
180
  # @return [Gitlab::ObjectifiedHash] Information about created SSH key.
165
- def create_ssh_key(title, key)
166
- post("/user/keys", body: { title: title, key: key })
181
+ def create_ssh_key(title, key, options = {})
182
+ user_id = options.delete :user_id
183
+ if user_id.to_i.zero?
184
+ post('/user/keys', body: { title: title, key: key })
185
+ else
186
+ post("/users/#{user_id}/keys", body: { title: title, key: key })
187
+ end
167
188
  end
168
189
 
169
190
  # Deletes an SSH key.
@@ -172,9 +193,16 @@ class Gitlab::Client
172
193
  # Gitlab.delete_ssh_key(1)
173
194
  #
174
195
  # @param [Integer] id The ID of a user's SSH key.
196
+ # @param [Hash] options A customizable set of options.
197
+ # @option options [Integer] :user_id id of the user to associate the key with
175
198
  # @return [Gitlab::ObjectifiedHash] Information about deleted SSH key.
176
- def delete_ssh_key(id)
177
- delete("/user/keys/#{id}")
199
+ def delete_ssh_key(id, options = {})
200
+ user_id = options.delete :user_id
201
+ if user_id.to_i.zero?
202
+ delete("/user/keys/#{id}")
203
+ else
204
+ delete("/users/#{user_id}/keys/#{id}")
205
+ end
178
206
  end
179
207
 
180
208
  # Gets user emails.
@@ -186,8 +214,8 @@ class Gitlab::Client
186
214
  #
187
215
  # @param [Integer] user_id The ID of a user.
188
216
  # @return [Gitlab::ObjectifiedHash]
189
- def emails(user_id=nil)
190
- url = user_id.to_i.zero? ? "/user/emails" : "/users/#{user_id}/emails"
217
+ def emails(user_id = nil)
218
+ url = user_id.to_i.zero? ? '/user/emails' : "/users/#{user_id}/emails"
191
219
  get(url)
192
220
  end
193
221
 
@@ -211,10 +239,15 @@ class Gitlab::Client
211
239
  #
212
240
  # @param [String] email Email address
213
241
  # @param [Integer] user_id The ID of a user.
242
+ # @param [Boolean] skip_confirmation Skip confirmation and assume e-mail is verified
214
243
  # @return [Gitlab::ObjectifiedHash]
215
- def add_email(email, user_id=nil)
216
- url = user_id.to_i.zero? ? "/user/emails" : "/users/#{user_id}/emails"
217
- post(url, body: {email: email})
244
+ def add_email(email, user_id = nil, skip_confirmation = nil)
245
+ url = user_id.to_i.zero? ? '/user/emails' : "/users/#{user_id}/emails"
246
+ if skip_confirmation.nil?
247
+ post(url, body: { email: email })
248
+ else
249
+ post(url, body: { email: email, skip_confirmation: skip_confirmation })
250
+ end
218
251
  end
219
252
 
220
253
  # Delete email
@@ -227,7 +260,7 @@ class Gitlab::Client
227
260
  # @param [Integer] id Email address ID
228
261
  # @param [Integer] user_id The ID of a user.
229
262
  # @return [Boolean]
230
- def delete_email(id, user_id=nil)
263
+ def delete_email(id, user_id = nil)
231
264
  url = user_id.to_i.zero? ? "/user/emails/#{id}" : "/users/#{user_id}/emails/#{id}"
232
265
  delete(url)
233
266
  end
@@ -242,9 +275,112 @@ class Gitlab::Client
242
275
  # @option options [String] :per_page Number of user to return per page
243
276
  # @option options [String] :page The page to retrieve
244
277
  # @return [Array<Gitlab::ObjectifiedHash>]
245
- def user_search(search, options={})
278
+ def user_search(search, options = {})
246
279
  options[:search] = search
247
- get("/users", query: options)
280
+ get('/users', query: options)
281
+ end
282
+
283
+ # Gets user custom_attributes.
284
+ #
285
+ # @example
286
+ # Gitlab.user_custom_attributes(2)
287
+ #
288
+ # @param [Integer] user_id The ID of a user.
289
+ # @return [Gitlab::ObjectifiedHash]
290
+ def user_custom_attributes(user_id)
291
+ get("/users/#{user_id}/custom_attributes")
292
+ end
293
+
294
+ # Gets single user custom_attribute.
295
+ #
296
+ # @example
297
+ # Gitlab.user_custom_attribute(key, 2)
298
+ #
299
+ # @param [String] key The custom_attributes key
300
+ # @param [Integer] user_id The ID of a user.
301
+ # @return [Gitlab::ObjectifiedHash]
302
+ def user_custom_attribute(key, user_id)
303
+ get("/users/#{user_id}/custom_attributes/#{key}")
304
+ end
305
+
306
+ # Creates a new custom_attribute
307
+ #
308
+ # @example
309
+ # Gitlab.add_custom_attribute('some_new_key', 'some_new_value', 2)
310
+ #
311
+ # @param [String] key The custom_attributes key
312
+ # @param [String] value The custom_attributes value
313
+ # @param [Integer] user_id The ID of a user.
314
+ # @return [Gitlab::ObjectifiedHash]
315
+ def add_user_custom_attribute(key, value, user_id)
316
+ url = "/users/#{user_id}/custom_attributes/#{key}"
317
+ put(url, body: { value: value })
318
+ end
319
+
320
+ # Delete custom_attribute
321
+ # Will delete a custom_attribute
322
+ #
323
+ # @example
324
+ # Gitlab.delete_user_custom_attribute('somekey', 2)
325
+ #
326
+ # @param [String] key The custom_attribute key to delete
327
+ # @param [Integer] user_id The ID of a user.
328
+ # @return [Boolean]
329
+ def delete_user_custom_attribute(key, user_id)
330
+ delete("/users/#{user_id}/custom_attributes/#{key}")
331
+ end
332
+
333
+ # Get all impersonation tokens for a user
334
+ #
335
+ # @example
336
+ # Gitlab.user_impersonation_tokens(1)
337
+ #
338
+ # @param [Integer] user_id The ID of the user.
339
+ # @param [String] state Filter impersonation tokens by state {}
340
+ # @return [Array<Gitlab::ObjectifiedHash>]
341
+ def user_impersonation_tokens(user_id)
342
+ get("/users/#{user_id}/impersonation_tokens")
343
+ end
344
+
345
+ # Get impersonation token information
346
+ #
347
+ # @example
348
+ # Gitlab.user_impersonation_token(1, 1)
349
+ #
350
+ # @param [Integer] user_id The ID of the user.
351
+ # @param [Integer] impersonation_token_id ID of the impersonation token.
352
+ # @return [Gitlab::ObjectifiedHash]
353
+ def user_impersonation_token(user_id, impersonation_token_id)
354
+ get("/users/#{user_id}/impersonation_tokens/#{impersonation_token_id}")
355
+ end
356
+
357
+ # Create impersonation token
358
+ #
359
+ # @example
360
+ # Gitlab.create_user_impersonation_token(2, "token", ["api", "read_user"])
361
+ # Gitlab.create_user_impersonation_token(2, "token", ["api", "read_user"], "1970-01-01")
362
+ #
363
+ # @param [Integer] user_id The ID of the user.
364
+ # @param [String] name Name for impersonation token.
365
+ # @param [Array<String>] scopes Array of scopes for the impersonation token
366
+ # @param [String] expires_at Date for impersonation token expiration in ISO format.
367
+ # @return [Gitlab::ObjectifiedHash]
368
+ def create_user_impersonation_token(user_id, name, scopes, expires_at = nil)
369
+ body = { name: name, scopes: scopes }
370
+ body[:expires_at] = expires_at if expires_at
371
+ post("/users/#{user_id}/impersonation_tokens", body: body)
372
+ end
373
+
374
+ # Revoke an impersonation token
375
+ #
376
+ # @example
377
+ # Gitlab.revoke_user_impersonation_token(1, 1)
378
+ #
379
+ # @param [Integer] user_id The ID of the user.
380
+ # @param [Integer] impersonation_token_id ID of the impersonation token.
381
+ # @return [Gitlab::ObjectifiedHash]
382
+ def revoke_user_impersonation_token(user_id, impersonation_token_id)
383
+ delete("/users/#{user_id}/impersonation_tokens/#{impersonation_token_id}")
248
384
  end
249
385
  end
250
386
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to version
5
+ # @see https://docs.gitlab.com/ce/api/version.html
6
+ module Versions
7
+ # Returns server version.
8
+ # @see https://docs.gitlab.com/ce/api/version.html
9
+ #
10
+ # @example
11
+ # Gitlab.version
12
+ #
13
+ # @return [Array<Gitlab::ObjectifiedHash>]
14
+ def version
15
+ get('/version')
16
+ end
17
+ end
18
+ end