fs-gitlab 4.18.1

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 (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,137 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to Award Emojis.
5
+ # @see https://docs.gitlab.com/ce/api/award_emoji.html
6
+ module AwardEmojis
7
+ # Gets a list of all award emoji for an awardable(issue, merge request or snippet)
8
+ #
9
+ # @example
10
+ # Gitlab.award_emojis(1, 80, 'issue')
11
+ # Gitlab.award_emojis(1, 60, 'merge_request')
12
+ # Gitlab.award_emojis(1, 40, 'snippet')
13
+ #
14
+ # @param [Integer] project The ID of a project.
15
+ # @param [Integer] awardable_id The ID of an awardable(issue, merge request or snippet).
16
+ # @param [String] awardable_type The type of the awardable(can be 'issue', 'merge_request' or 'snippet')
17
+ # @return [Array<Gitlab::ObjectifiedHash>]
18
+ def award_emojis(project, awardable_id, awardable_type)
19
+ get("/projects/#{url_encode project}/#{awardable_type}s/#{awardable_id}/award_emoji")
20
+ end
21
+
22
+ # Gets a list of all award emoji for a single note on an awardable(issue, merge request or snippet)
23
+ #
24
+ # @example
25
+ # Gitlab.note_award_emojis(1, 80, 'issue', 1)
26
+ # Gitlab.note_award_emojis(1, 60, 'merge_request', 1)
27
+ # Gitlab.note_award_emojis(1, 40, 'snippet', 1)
28
+ #
29
+ # @param [Integer] project The ID of a project.
30
+ # @param [Integer] awardable_id The ID of an awardable(issue, merge request or snippet).
31
+ # @param [String] awardable_type The type of the awardable(can be 'issue', 'merge_request' or 'snippet')
32
+ # @param [Integer] note_id The ID of a note.
33
+ # @return [Array<Gitlab::ObjectifiedHash>]
34
+ def note_award_emojis(project, awardable_id, awardable_type, note_id)
35
+ get("/projects/#{url_encode project}/#{awardable_type}s/#{awardable_id}/notes/#{note_id}/award_emoji")
36
+ end
37
+
38
+ # Gets a single award emoji for an awardable(issue, merge request or snippet)
39
+ #
40
+ # @example
41
+ # Gitlab.award_emoji(1, 80, 'issue', 4)
42
+ # Gitlab.award_emoji(1, 60, 'merge_request', 4)
43
+ # Gitlab.award_emoji(1, 40, 'snippet', 4)
44
+ #
45
+ # @param [Integer] project The ID of a project.
46
+ # @param [Integer] awardable_id The ID of an awardable(issue, merge request or snippet).
47
+ # @param [String] awardable_type The type of the awardable(can be 'issue', 'merge_request' or 'snippet')
48
+ # @param [Integer] award_id The ID of an award emoji.
49
+ # @return [Gitlab::ObjectifiedHash]
50
+ def award_emoji(project, awardable_id, awardable_type, award_id)
51
+ get("/projects/#{url_encode project}/#{awardable_type}s/#{awardable_id}/award_emoji/#{award_id}")
52
+ end
53
+
54
+ # Gets a single award emoji from a single note on an awardable(issue, merge request or snippet)
55
+ #
56
+ # @example
57
+ # Gitlab.note_award_emoji(1, 80, 'issue', 1, 4)
58
+ # Gitlab.note_award_emoji(1, 60, 'merge_request', 1, 4)
59
+ # Gitlab.note_award_emoji(1, 40, 'snippet', 1, 4)
60
+ #
61
+ # @param [Integer] project The ID of a project.
62
+ # @param [Integer] awardable_id The ID of an awardable(issue, merge request or snippet).
63
+ # @param [String] awardable_type The type of the awardable(can be 'issue', 'merge_request' or 'snippet')
64
+ # @param [Integer] note_id The ID of a note.
65
+ # @param [Integer] award_id The ID of an award emoji.
66
+ # @return [Gitlab::ObjectifiedHash]
67
+ def note_award_emoji(project, awardable_id, awardable_type, note_id, award_id)
68
+ get("/projects/#{url_encode project}/#{awardable_type}s/#{awardable_id}/notes/#{note_id}/award_emoji/#{award_id}")
69
+ end
70
+
71
+ # Awards a new emoji to an awardable(issue, merge request or snippet)
72
+ #
73
+ # @example
74
+ # Gitlab.create_award_emoji(1, 80, 'issue', 'blowfish')
75
+ # Gitlab.create_award_emoji(1, 80, 'merge_request', 'blowfish')
76
+ # Gitlab.create_award_emoji(1, 80, 'snippet', 'blowfish')
77
+ #
78
+ # @param [Integer] project The ID of a project.
79
+ # @param [Integer] awardable_id The ID of an awardable(issue, merge request or snippet).
80
+ # @param [String] awardable_type The type of the awardable(can be 'issue', 'merge_request' or 'snippet')
81
+ # @param [String] emoji_name The name of the emoji, without colons.
82
+ # @return [Gitlab::ObjectifiedHash]
83
+ def create_award_emoji(project, awardable_id, awardable_type, emoji_name)
84
+ post("/projects/#{url_encode project}/#{awardable_type}s/#{awardable_id}/award_emoji", body: { name: emoji_name })
85
+ end
86
+
87
+ # Awards a new emoji to a note on an awardable(issue, merge request or snippet)
88
+ #
89
+ # @example
90
+ # Gitlab.create_note_award_emoji(1, 80, 'issue', 1, 'blowfish')
91
+ # Gitlab.create_note_award_emoji(1, 80, 'merge_request', 1, 'blowfish')
92
+ # Gitlab.create_note_award_emoji(1, 80, 'snippet', 1, 'blowfish')
93
+ #
94
+ # @param [Integer] project The ID of a project.
95
+ # @param [Integer] awardable_id The ID of an awardable(issue, merge request or snippet).
96
+ # @param [String] awardable_type The type of the awardable(can be 'issue', 'merge_request' or 'snippet')
97
+ # @param [Integer] note_id The ID of a note.
98
+ # @param [String] emoji_name The name of the emoji, without colons.
99
+ # @return [Gitlab::ObjectifiedHash]
100
+ def create_note_award_emoji(project, awardable_id, awardable_type, note_id, emoji_name)
101
+ post("/projects/#{url_encode project}/#{awardable_type}s/#{awardable_id}/notes/#{note_id}/award_emoji", body: { name: emoji_name })
102
+ end
103
+
104
+ # Deletes a single award emoji from an awardable(issue, merge request or snippet)
105
+ #
106
+ # @example
107
+ # Gitlab.delete_award_emoji(1, 80, 'issue', 4)
108
+ # Gitlab.delete_award_emoji(1, 60, 'merge_request', 4)
109
+ # Gitlab.delete_award_emoji(1, 40, 'snippet', 4)
110
+ #
111
+ # @param [Integer] project The ID of a project.
112
+ # @param [Integer] awardable_id The ID of an awardable(issue, merge request or snippet).
113
+ # @param [String] awardable_type The type of the awardable(can be 'issue', 'merge_request' or 'snippet')
114
+ # @param [Integer] award_id The ID of an award emoji.
115
+ # @return [void] This API call returns an empty response body.
116
+ def delete_award_emoji(project, awardable_id, awardable_type, award_id)
117
+ delete("/projects/#{url_encode project}/#{awardable_type}s/#{awardable_id}/award_emoji/#{award_id}")
118
+ end
119
+
120
+ # Deletes a single award emoji from a single note on an awardable(issue, merge request or snippet)
121
+ #
122
+ # @example
123
+ # Gitlab.delete_note_award_emoji(1, 80, 'issue', 1, 4)
124
+ # Gitlab.delete_note_award_emoji(1, 60, 'merge_request', 1, 4)
125
+ # Gitlab.delete_note_award_emoji(1, 40, 'snippet', 1, 4)
126
+ #
127
+ # @param [Integer] project The ID of a project.
128
+ # @param [Integer] awardable_id The ID of an awardable(issue, merge request or snippet).
129
+ # @param [String] awardable_type The type of the awardable(can be 'issue', 'merge_request' or 'snippet')
130
+ # @param [Integer] note_id The ID of a note.
131
+ # @param [Integer] award_id The ID of an award emoji.
132
+ # @return [void] This API call returns an empty response body.
133
+ def delete_note_award_emoji(project, awardable_id, awardable_type, note_id, award_id)
134
+ delete("/projects/#{url_encode project}/#{awardable_type}s/#{awardable_id}/notes/#{note_id}/award_emoji/#{award_id}")
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,146 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to issue boards.
5
+ # @see https://docs.gitlab.com/ce/api/boards.html
6
+ module Boards
7
+ # Gets a list of project's boards.
8
+ #
9
+ # @example
10
+ # Gitlab.boards(5)
11
+ # Gitlab.boards({ per_page: 40 })
12
+ #
13
+ # @param [Integer, String] project The ID or name of a project.
14
+ # @param [Hash] options A customizable set of options.
15
+ # @option options [Integer] :page The page number.
16
+ # @option options [Integer] :per_page The number of results per page.
17
+ # @return [Array<Gitlab::ObjectifiedHash>]
18
+ def boards(project, options = {})
19
+ get("/projects/#{url_encode project}/boards", query: options)
20
+ end
21
+
22
+ # Get a single board.
23
+ #
24
+ # @example
25
+ # Gitlab.board(5, 1)
26
+ #
27
+ # @param [Integer, String] project The ID or name of a project.
28
+ # @param [Integer] id The ID of a board.
29
+ # @return [Gitlab::ObjectifiedHash] Returns information about the board
30
+ def board(project, id)
31
+ get("/projects/#{url_encode project}/boards/#{id}")
32
+ end
33
+
34
+ # Creates a new board.
35
+ #
36
+ # @example
37
+ # Gitlab.create_board(5, 'newboard')
38
+ #
39
+ # @param [Integer, String] project The ID or name of a project.
40
+ # @param [String] name The name of the new board.
41
+ # @return [Gitlab::ObjectifiedHash] Information about created board.
42
+ def create_board(project, name)
43
+ body = { name: name }
44
+ post("/projects/#{url_encode project}/boards", body: body)
45
+ end
46
+
47
+ # Updates a board.
48
+ #
49
+ # @example
50
+ # Gitlab.edit_board(5, 1, name: 'new_name')
51
+ # Gitlab.edit_board(5, 1, name: 'new_name', assignee_id: 1, milestone_id: 1)
52
+ #
53
+ # @param [Integer, String] project The ID or name of a project.
54
+ # @param [Integer] id The ID of a board.
55
+ # @param [Hash] options A customizable set of options.
56
+ # @option options [String] :name(optional) The new name of the board.
57
+ # @option options [Integer] :assignee_id(optional) The assignee the board should be scoped to.
58
+ # @option options [Integer] :milestone_id(optional) The milestone the board should be scoped to.
59
+ # @option options [String] :labels(optional) Comma-separated list of label names which the board should be scoped to.
60
+ # @option options [Integer] :weight(optional) The weight range from 0 to 9, to which the board should be scoped to.
61
+ # @return [Gitlab::ObjectifiedHash] Information about updated board.
62
+ def edit_board(project, id, options = {})
63
+ put("/projects/#{url_encode project}/boards/#{id}", body: options)
64
+ end
65
+
66
+ # Deletes a board.
67
+ #
68
+ # @example
69
+ # Gitlab.delete_board(5, 1)
70
+ #
71
+ # @param [Integer, String] project The ID or name of a project.
72
+ # @param [Integer] id The ID of a board.
73
+ # @return [void] This API call returns an empty response body.
74
+ def delete_board(project, id)
75
+ delete("/projects/#{url_encode project}/boards/#{id}")
76
+ end
77
+
78
+ # Gets a board lists
79
+ #
80
+ # @example
81
+ # Gitlab.board_lists(5, 42)
82
+ #
83
+ # @param [Integer, String] project The ID or name of a project.
84
+ # @param [Integer] id The ID of a board.
85
+ # @return [Gitlab::ObjectifiedHash]
86
+ def board_lists(project, id)
87
+ get("/projects/#{url_encode project}/boards/#{id}/lists")
88
+ end
89
+
90
+ #
91
+ # Gets a single board list
92
+ #
93
+ # @example
94
+ # Gitlab.board_list(5, 42, 25)
95
+ #
96
+ # @param [Integer, String] project The ID or name of a project.
97
+ # @param [Integer] board_id The ID of a board.
98
+ # @param [Integer] id The ID of a list.
99
+ # @return [Gitlab::ObjectifiedHash]
100
+ def board_list(project, board_id, id)
101
+ get("/projects/#{url_encode project}/boards/#{board_id}/lists/#{id}")
102
+ end
103
+
104
+ # Creates a new board list.
105
+ # Only for admins and project owners
106
+ #
107
+ # @example
108
+ # Gitlab.create_board_list(5, 42, 25)
109
+ #
110
+ # @param [Integer, String] project The ID or name of a project.
111
+ # @param [Integer] id The ID of a board.
112
+ # @param [Integer] label_id The ID of a label.
113
+ # @return [Gitlab::ObjectifiedHash] Information about created list.
114
+ def create_board_list(project, board_id, label_id)
115
+ post("/projects/#{url_encode project}/boards/#{board_id}/lists", body: { label_id: label_id })
116
+ end
117
+
118
+ # Updates a board list.
119
+ # Only for admins and project owners
120
+ #
121
+ # @example
122
+ # Gitlab.edit_board_list(6, 1, 12, 5)
123
+ #
124
+ # @param [Integer, String] project The ID or name of a project.
125
+ # @param [Integer] board_id The ID of a board.
126
+ # @param [Integer] id The ID of a list.
127
+ # @return [Gitlab::ObjectifiedHash] Information about updated board list.
128
+ def edit_board_list(project, board_id, id, position)
129
+ put("/projects/#{url_encode project}/boards/#{board_id}/lists/#{id}", body: { position: position })
130
+ end
131
+
132
+ # Deletes a board list.
133
+ # Only for admins and project owners
134
+ #
135
+ # @example
136
+ # Gitlab.delete_board_list(3, 42, 32)
137
+ #
138
+ # @param [Integer, String] project The ID or name of a project.
139
+ # @param [Integer] board_id The ID of a board.
140
+ # @param [Integer] id The ID of a list.
141
+ # @return [Gitlab::ObjectifiedHash] Information about deleted board list.
142
+ def delete_board_list(project, board_id, id)
143
+ delete("/projects/#{url_encode project}/boards/#{board_id}/lists/#{id}")
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to repositories.
5
+ # @see https://docs.gitlab.com/ce/api/branches.html
6
+ module Branches
7
+ # Gets a list of project repositiory branches.
8
+ #
9
+ # @example
10
+ # Gitlab.branches(42)
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 branches(project, options = {})
18
+ get("/projects/#{url_encode project}/repository/branches", query: options)
19
+ end
20
+ alias repo_branches branches
21
+
22
+ # Gets information about a repository branch.
23
+ #
24
+ # @example
25
+ # Gitlab.branch(3, 'api')
26
+ # Gitlab.repo_branch(5, 'master')
27
+ #
28
+ # @param [Integer, String] project The ID or name of a project.
29
+ # @param [String] branch The name of the branch.
30
+ # @return [Gitlab::ObjectifiedHash]
31
+ def branch(project, branch)
32
+ get("/projects/#{url_encode project}/repository/branches/#{url_encode branch}")
33
+ end
34
+ alias repo_branch branch
35
+
36
+ # Protects a repository branch.
37
+ #
38
+ # @example
39
+ # Gitlab.protect_branch(3, 'api')
40
+ # Gitlab.repo_protect_branch(5, 'master')
41
+ # Gitlab.protect_branch(5, 'api', developers_can_push: true)
42
+ #
43
+ # To update options, call `protect_branch` again with new options (i.e. `developers_can_push: false`)
44
+ #
45
+ # @param [Integer, String] project The ID or name of a project.
46
+ # @param [String] branch The name of the branch.
47
+ # @param [Hash] options A customizable set of options.
48
+ # @option options [Boolean] :developers_can_push True to allow developers to push to the branch (default = false)
49
+ # @option options [Boolean] :developers_can_merge True to allow developers to merge into the branch (default = false)
50
+ # @return [Gitlab::ObjectifiedHash] Details about the branch
51
+ def protect_branch(project, branch, options = {})
52
+ post("/projects/#{url_encode project}/protected_branches", body: { name: branch }.merge(options))
53
+ end
54
+ alias repo_protect_branch protect_branch
55
+
56
+ # Unprotects a repository branch.
57
+ #
58
+ # @example
59
+ # Gitlab.unprotect_branch(3, 'api')
60
+ # Gitlab.repo_unprotect_branch(5, 'master')
61
+ #
62
+ # @param [Integer, String] project The ID or name of a project.
63
+ # @param [String] branch The name of the branch.
64
+ # @return [Gitlab::ObjectifiedHash] Details about the branch
65
+ def unprotect_branch(project, branch)
66
+ delete("/projects/#{url_encode project}/protected_branches/#{url_encode branch}")
67
+ end
68
+ alias repo_unprotect_branch unprotect_branch
69
+
70
+ # Creates a repository branch. Requires Gitlab >= 6.8.x
71
+ #
72
+ # @example
73
+ # Gitlab.create_branch(3, 'api', 'feat/new-api')
74
+ # Gitlab.repo_create_branch(5, 'master', 'develop')
75
+ #
76
+ # @param [Integer, String] project The ID or name of a project.
77
+ # @param [String] branch The name of the new branch.
78
+ # @param [String] ref Create branch from commit sha or existing branch
79
+ # @return [Gitlab::ObjectifiedHash] Details about the branch
80
+ def create_branch(project, branch, ref)
81
+ post("/projects/#{url_encode project}/repository/branches", query: { branch: branch, ref: ref })
82
+ end
83
+ alias repo_create_branch create_branch
84
+
85
+ # Deletes a repository branch. Requires Gitlab >= 6.8.x
86
+ #
87
+ # @example
88
+ # Gitlab.delete_branch(3, 'api')
89
+ # Gitlab.repo_delete_branch(5, 'master')
90
+ #
91
+ # @param [Integer, String] project The ID or name of a project.
92
+ # @param [String] branch The name of the branch to delete
93
+ def delete_branch(project, branch)
94
+ delete("/projects/#{url_encode project}/repository/branches/#{url_encode branch}")
95
+ end
96
+ alias repo_delete_branch delete_branch
97
+
98
+ # Delete all branches that are merged into the project default branch. Protected branches will not be deleted as part of this operation.
99
+ #
100
+ # @example
101
+ # Gitlab.delete_merged_branches(3)
102
+ #
103
+ # @param [Integer, String] project The ID or name of a project.
104
+ # @return [nil] This API call returns an empty response body.
105
+ def delete_merged_branches(project)
106
+ delete("/projects/#{url_encode project}/repository/merged_branches")
107
+ end
108
+ alias repo_delete_merged_branches delete_merged_branches
109
+
110
+ # Gets a list of protected branches from a project.
111
+ #
112
+ # @example
113
+ # Gitlab.protected_branches(42)
114
+ #
115
+ # @param [Integer, String] project The ID or name of a project.
116
+ # @return [Array<Gitlab::ObjectifiedHash>]
117
+ def protected_branches(project)
118
+ get("/projects/#{url_encode project}/protected_branches")
119
+ end
120
+ alias repo_protected_branches protected_branches
121
+
122
+ # Gets a single protected branch or wildcard protected branch
123
+ #
124
+ # @example
125
+ # Gitlab.protected_branch(3, 'api')
126
+ #
127
+ # @param [Integer, String] project The ID or name of a project.
128
+ # @param [String] name The name of the branch or wildcard
129
+ # @return [Gitlab::ObjectifiedHash]
130
+ def protected_branch(project, branch)
131
+ get("/projects/#{url_encode project}/protected_branches/#{url_encode branch}")
132
+ end
133
+ alias repo_protected_branch protected_branch
134
+ end
135
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to broadcast messages (only accessible to administrators).
5
+ # @see https://docs.gitlab.com/ce/api/broadcast_messages.html
6
+ module BroadcastMessages
7
+ # Get all broadcast messages
8
+ #
9
+ # @example
10
+ # Gitlab.broadcast_messages
11
+ #
12
+ # @return [Array<Gitlab::ObjectifiedHash>]
13
+ def broadcast_messages
14
+ get('/broadcast_messages')
15
+ end
16
+
17
+ # Get a specific broadcast message
18
+ #
19
+ # @example
20
+ # Gitlab.broadcast_message(3)
21
+ #
22
+ # @param [Integer] id The ID of broadcast message
23
+ # @return [Gitlab::ObjectifiedHash]
24
+ def broadcast_message(id)
25
+ get("/broadcast_messages/#{id}")
26
+ end
27
+
28
+ # Create a broadcast message.
29
+ #
30
+ # @example
31
+ # Gitlab.create_broadcast_message('Mayday')
32
+ # Gitlab.create_broadcast_message('Mayday', {starts_at: Time.zone.now, ends_at: Time.zone.now + 30.minutes, color: '#cecece', font: '#FFFFFF'})
33
+ #
34
+ # @param [String] message Message to display
35
+ # @param [Hash] options A customizable set of options.
36
+ # @option options [DateTime] :starts_at(optional) Starting time (defaults to current time)
37
+ # @option options [DateTime] :ends_at(optional) Ending time (defaults to one hour from current time)
38
+ # @option options [String] :color(optional) Background color hex code
39
+ # @option options [String] :font(optional) Foreground color hex code
40
+ # @return [Gitlab::ObjectifiedHash] Information about created broadcast message.
41
+ def create_broadcast_message(message, options = {})
42
+ body = { message: message }.merge(options)
43
+ post('/broadcast_messages', body: body)
44
+ end
45
+
46
+ # Update a broadcast message
47
+ #
48
+ # @example
49
+ # Gitlab.edit_broadcast_message(6, { message: 'No Mayday' })
50
+ # Gitlab.edit_broadcast_message(6, { font: '#FEFEFE' })
51
+ #
52
+ # @param [Integer] id The ID of a broadcast message
53
+ # @param [Hash] options A customizable set of options.
54
+ # @option options [String] :message(optional) Message to display
55
+ # @option options [DateTime] :starts_at(optional) Starting time (defaults to current time)
56
+ # @option options [DateTime] :ends_at(optional) Ending time (defaults to one hour from current time)
57
+ # @option options [String] :color(optional) Background color hex code
58
+ # @option options [String] :font(optional) Foreground color hex code
59
+ # @return [Gitlab::ObjectifiedHash] Information about updated broadcast message.
60
+ def edit_broadcast_message(id, options = {})
61
+ put("/broadcast_messages/#{id}", body: options)
62
+ end
63
+
64
+ # Delete a broadcast message.
65
+ #
66
+ # @example
67
+ # Gitlab.delete_broadcast_message(3)
68
+ #
69
+ # @param [Integer] id The ID of a broadcast message.
70
+ # @return [nil] This API call returns an empty response body.
71
+ def delete_broadcast_message(id)
72
+ delete("/broadcast_messages/#{id}")
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to builds.
5
+ # @see https://docs.gitlab.com/ce/api/project_level_variables.html
6
+ # @see https://docs.gitlab.com/ce/api/group_level_variables.html
7
+ module BuildVariables
8
+ # Gets a list of the project's build variables
9
+ #
10
+ # @example
11
+ # Gitlab.variables(5)
12
+ #
13
+ # @param [Integer, String] project The ID or name of a project.
14
+ # @return [Array<Gitlab::ObjectifiedHash>] The list of variables.
15
+ def variables(project)
16
+ get("/projects/#{url_encode project}/variables")
17
+ end
18
+
19
+ # Gets details of a project's specific build variable.
20
+ #
21
+ # @example
22
+ # Gitlab.variable(5, "TEST_VARIABLE_1")
23
+ #
24
+ # @param [Integer, String] project The ID or name of a project.
25
+ # @param [String] key The key of a variable.
26
+ # @return [Gitlab::ObjectifiedHash] The variable.
27
+ def variable(project, key)
28
+ get("/projects/#{url_encode project}/variables/#{key}")
29
+ end
30
+
31
+ # Create a build variable for a project.
32
+ #
33
+ # @example
34
+ # Gitlab.create_variable(5, "NEW_VARIABLE", "new value")
35
+ #
36
+ # @param [Integer, String] project The ID or name of a project.
37
+ # @param [String] key The key of a variable; must have no more than 255 characters; only `A-Z`, `a-z`, `0-9` and `_` are allowed
38
+ # @param [String] value The value of a variable
39
+ # @param [Hash] opts optional parameters
40
+ # @return [Gitlab::ObjectifiedHash] The variable.
41
+ def create_variable(project, key, value, **opts)
42
+ post("/projects/#{url_encode project}/variables", body: opts.merge(key: key, value: value))
43
+ end
44
+
45
+ # Update a project's build variable.
46
+ #
47
+ # @example
48
+ # Gitlab.update_variable(5, "NEW_VARIABLE", "updated value")
49
+ #
50
+ # @param [Integer, String] project The ID or name of a project.
51
+ # @param [String] key The key of a variable
52
+ # @param [String] value The value of a variable
53
+ # @param [Hash] opts optional parameters
54
+ # @return [Gitlab::ObjectifiedHash] The variable.
55
+ def update_variable(project, key, value, **opts)
56
+ put("/projects/#{url_encode project}/variables/#{key}", body: opts.merge(value: value))
57
+ end
58
+
59
+ # Remove a project's build variable.
60
+ #
61
+ # @example
62
+ # Gitlab.remove_variable(5, "VARIABLE_1")
63
+ #
64
+ # @param [Integer, String] project The ID or name of a project.
65
+ # @param [String] key The key of a variable.
66
+ # @param [Hash] opts optional parameters
67
+ # @return [Gitlab::ObjectifiedHash] The variable.
68
+ def remove_variable(project, key, **opts)
69
+ delete("/projects/#{url_encode project}/variables/#{key}", query: opts)
70
+ end
71
+
72
+ # Gets a list of the group's build variables
73
+ #
74
+ # @example
75
+ # Gitlab.group_variables(5)
76
+ #
77
+ # @param [Integer, String] group The ID or name of a group.
78
+ # @return [Array<Gitlab::ObjectifiedHash>] The list of variables.
79
+ def group_variables(group)
80
+ get("/groups/#{url_encode group}/variables")
81
+ end
82
+
83
+ # Gets details of a group's specific build variable.
84
+ #
85
+ # @example
86
+ # Gitlab.group_variable(5, "TEST_VARIABLE_1")
87
+ #
88
+ # @param [Integer, String] group The ID or name of a group.
89
+ # @param [String] key The key of a variable.
90
+ # @return [Gitlab::ObjectifiedHash] The variable.
91
+ def group_variable(group, key)
92
+ get("/groups/#{url_encode group}/variables/#{key}")
93
+ end
94
+
95
+ # Create a build variable for a group.
96
+ #
97
+ # @example
98
+ # Gitlab.create_group_variable(5, "NEW_VARIABLE", "new value")
99
+ #
100
+ # @param [Integer, String] group The ID or name of a group.
101
+ # @param [String] key The key of a variable; must have no more than 255 characters; only `A-Z`, `a-z`, `0-9` and `_` are allowed
102
+ # @param [String] value The value of a variable
103
+ # @param [Hash] opts optional parameters
104
+ # @return [Gitlab::ObjectifiedHash] The variable.
105
+ def create_group_variable(group, key, value, **opts)
106
+ post("/groups/#{url_encode group}/variables", body: opts.merge(key: key, value: value))
107
+ end
108
+
109
+ # Update a group's build variable.
110
+ #
111
+ # @example
112
+ # Gitlab.update_group_variable(5, "NEW_VARIABLE", "updated value")
113
+ #
114
+ # @param [Integer, String] group The ID or name of a group.
115
+ # @param [String] key The key of a variable
116
+ # @param [String] value The value of a variable
117
+ # @param [Hash] opts optional parameters
118
+ # @return [Gitlab::ObjectifiedHash] The variable.
119
+ def update_group_variable(group, key, value, **opts)
120
+ put("/groups/#{url_encode group}/variables/#{key}", body: opts.merge(value: value))
121
+ end
122
+
123
+ # Remove a group's build variable.
124
+ #
125
+ # @example
126
+ # Gitlab.remove_group_variable(5, "VARIABLE_1")
127
+ #
128
+ # @param [Integer, String] group The ID or name of a group.
129
+ # @param [String] key The key of a variable.
130
+ # @return [Gitlab::ObjectifiedHash] The variable.
131
+ def remove_group_variable(group, key)
132
+ delete("/groups/#{url_encode group}/variables/#{key}")
133
+ end
134
+ end
135
+ end