gitlab-faraday 5.1.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 (79) hide show
  1. checksums.yaml +7 -0
  2. data/lib/gitlab/api.rb +16 -0
  3. data/lib/gitlab/client/access_requests.rb +103 -0
  4. data/lib/gitlab/client/application_settings.rb +172 -0
  5. data/lib/gitlab/client/avatar.rb +21 -0
  6. data/lib/gitlab/client/award_emojis.rb +137 -0
  7. data/lib/gitlab/client/boards.rb +146 -0
  8. data/lib/gitlab/client/branches.rb +135 -0
  9. data/lib/gitlab/client/broadcast_messages.rb +75 -0
  10. data/lib/gitlab/client/build_variables.rb +135 -0
  11. data/lib/gitlab/client/builds.rb +108 -0
  12. data/lib/gitlab/client/commits.rb +216 -0
  13. data/lib/gitlab/client/container_registry.rb +90 -0
  14. data/lib/gitlab/client/deployments.rb +34 -0
  15. data/lib/gitlab/client/environments.rb +89 -0
  16. data/lib/gitlab/client/epic_issues.rb +23 -0
  17. data/lib/gitlab/client/epics.rb +73 -0
  18. data/lib/gitlab/client/events.rb +60 -0
  19. data/lib/gitlab/client/features.rb +48 -0
  20. data/lib/gitlab/client/group_badges.rb +88 -0
  21. data/lib/gitlab/client/group_boards.rb +141 -0
  22. data/lib/gitlab/client/group_labels.rb +88 -0
  23. data/lib/gitlab/client/group_milestones.rb +94 -0
  24. data/lib/gitlab/client/groups.rb +526 -0
  25. data/lib/gitlab/client/issue_links.rb +48 -0
  26. data/lib/gitlab/client/issues.rb +242 -0
  27. data/lib/gitlab/client/jobs.rb +250 -0
  28. data/lib/gitlab/client/keys.rb +29 -0
  29. data/lib/gitlab/client/labels.rb +88 -0
  30. data/lib/gitlab/client/lint.rb +19 -0
  31. data/lib/gitlab/client/markdown.rb +23 -0
  32. data/lib/gitlab/client/merge_request_approvals.rb +265 -0
  33. data/lib/gitlab/client/merge_requests.rb +415 -0
  34. data/lib/gitlab/client/merge_trains.rb +55 -0
  35. data/lib/gitlab/client/milestones.rb +106 -0
  36. data/lib/gitlab/client/namespaces.rb +22 -0
  37. data/lib/gitlab/client/notes.rb +313 -0
  38. data/lib/gitlab/client/packages.rb +95 -0
  39. data/lib/gitlab/client/pipeline_schedules.rb +159 -0
  40. data/lib/gitlab/client/pipeline_triggers.rb +103 -0
  41. data/lib/gitlab/client/pipelines.rb +130 -0
  42. data/lib/gitlab/client/project_badges.rb +85 -0
  43. data/lib/gitlab/client/project_clusters.rb +83 -0
  44. data/lib/gitlab/client/project_exports.rb +54 -0
  45. data/lib/gitlab/client/project_release_links.rb +76 -0
  46. data/lib/gitlab/client/project_releases.rb +90 -0
  47. data/lib/gitlab/client/projects.rb +792 -0
  48. data/lib/gitlab/client/protected_tags.rb +59 -0
  49. data/lib/gitlab/client/remote_mirrors.rb +90 -0
  50. data/lib/gitlab/client/repositories.rb +130 -0
  51. data/lib/gitlab/client/repository_files.rb +131 -0
  52. data/lib/gitlab/client/repository_submodules.rb +27 -0
  53. data/lib/gitlab/client/resource_label_events.rb +82 -0
  54. data/lib/gitlab/client/resource_state_events.rb +57 -0
  55. data/lib/gitlab/client/runners.rb +278 -0
  56. data/lib/gitlab/client/search.rb +66 -0
  57. data/lib/gitlab/client/services.rb +53 -0
  58. data/lib/gitlab/client/sidekiq.rb +39 -0
  59. data/lib/gitlab/client/snippets.rb +95 -0
  60. data/lib/gitlab/client/system_hooks.rb +64 -0
  61. data/lib/gitlab/client/tags.rb +97 -0
  62. data/lib/gitlab/client/templates.rb +100 -0
  63. data/lib/gitlab/client/todos.rb +46 -0
  64. data/lib/gitlab/client/user_snippets.rb +114 -0
  65. data/lib/gitlab/client/users.rb +521 -0
  66. data/lib/gitlab/client/versions.rb +18 -0
  67. data/lib/gitlab/client/wikis.rb +79 -0
  68. data/lib/gitlab/client.rb +96 -0
  69. data/lib/gitlab/configuration.rb +36 -0
  70. data/lib/gitlab/error.rb +114 -0
  71. data/lib/gitlab/file_response.rb +43 -0
  72. data/lib/gitlab/headers/page_links.rb +32 -0
  73. data/lib/gitlab/headers/total.rb +24 -0
  74. data/lib/gitlab/objectified_hash.rb +44 -0
  75. data/lib/gitlab/paginated_response.rb +114 -0
  76. data/lib/gitlab/request.rb +144 -0
  77. data/lib/gitlab/version.rb +5 -0
  78. data/lib/gitlab.rb +36 -0
  79. metadata +156 -0
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to GitLab Container Registry.
5
+ # @see https://docs.gitlab.com/ce/api/container_registry.html
6
+ module ContainerRegistry
7
+ # Get a list of registry repositories in a project.
8
+ #
9
+ # @example
10
+ # Gitlab.registry_repositories(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 [Boolean] :tags Return tags array in the response.
15
+ # @option options [Boolean] :tags_count Return tags count in the response.
16
+ # @option options [Integer] :page The page number.
17
+ # @option options [Integer] :per_page The number of results per page.
18
+ # @return [Array<Gitlab::ObjectifiedHash>] Returns list of registry repositories in a project.
19
+ def registry_repositories(project, options = {})
20
+ get("/projects/#{url_encode project}/registry/repositories", query: options)
21
+ end
22
+
23
+ # Delete a repository in registry.
24
+ #
25
+ # @example
26
+ # Gitlab.delete_registry_repository(5, 2)
27
+ #
28
+ # @param [Integer, String] project The ID or name of a project.
29
+ # @param [Integer] id The ID of registry repository.
30
+ # @return [void] This API call returns an empty response body.
31
+ def delete_registry_repository(project, id)
32
+ delete("/projects/#{url_encode project}/registry/repositories/#{id}")
33
+ end
34
+
35
+ # Get a list of tags for given registry repository.
36
+ #
37
+ # @example
38
+ # Gitlab.registry_repository_tags(5, 2)
39
+ #
40
+ # @param [Integer, String] project The ID or name of a project.
41
+ # @param [Integer] repository_id The ID of registry repository.
42
+ # @return [Array<Gitlab::ObjectifiedHash>] Returns list of tags of a registry repository.
43
+ def registry_repository_tags(project, repository_id)
44
+ get("/projects/#{url_encode project}/registry/repositories/#{repository_id}/tags")
45
+ end
46
+
47
+ # Get details of a registry repository tag.
48
+ #
49
+ # @example
50
+ # Gitlab.registry_repository_tag(5, 2, 'v10.0.0')
51
+ #
52
+ # @param [Integer, String] project The ID or name of a project.
53
+ # @param [Integer] repository_id The ID of registry repository.
54
+ # @param [String] tag_name The name of tag.
55
+ # @return <Gitlab::ObjectifiedHash> Returns details about the registry repository tag
56
+ def registry_repository_tag(project, repository_id, tag_name)
57
+ get("/projects/#{url_encode project}/registry/repositories/#{repository_id}/tags/#{tag_name}")
58
+ end
59
+
60
+ # Delete a registry repository tag.
61
+ #
62
+ # @example
63
+ # Gitlab.delete_registry_repository_tag(5, 2, 'v10.0.0')
64
+ #
65
+ # @param [Integer, String] project The ID or name of a project.
66
+ # @param [Integer] repository_id The ID of registry repository.
67
+ # @param [String] tag_name The name of tag.
68
+ # @return [void] This API call returns an empty response body.
69
+ def delete_registry_repository_tag(project, repository_id, tag_name)
70
+ delete("/projects/#{url_encode project}/registry/repositories/#{repository_id}/tags/#{tag_name}")
71
+ end
72
+
73
+ # Delete repository tags in bulk based on given criteria.
74
+ #
75
+ # @example
76
+ # Gitlab.bulk_delete_registry_repository_tags(5, 2, name_regex: '.*')
77
+ # Gitlab.bulk_delete_registry_repository_tags(5, 2, name_regex: '[0-9a-z]{40}', keep_n: 5, older_than: '1d')
78
+ #
79
+ # @param [Integer, String] project The ID or name of a project.
80
+ # @param [Integer] repository_id The ID of registry repository.
81
+ # @param [Hash] options A customizable set of options.
82
+ # @option options [String] :name_regex(required) The regex of the name to delete. To delete all tags specify .*.
83
+ # @option options [Integer] :keep_n(optional) The amount of latest tags of given name to keep.
84
+ # @option options [String] :older_than(required) Tags to delete that are older than the given time, written in human readable form 1h, 1d, 1month.
85
+ # @return [void] This API call returns an empty response body.
86
+ def bulk_delete_registry_repository_tags(project, repository_id, options = {})
87
+ delete("/projects/#{url_encode project}/registry/repositories/#{repository_id}/tags", body: options)
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to deployments.
5
+ # @see https://docs.gitlab.com/ce/api/deployments.html
6
+ module Deployments
7
+ # Gets a list of project deployments.
8
+ #
9
+ # @example
10
+ # Gitlab.deployments(5)
11
+ # Gitlab.deployments(5, { per_page: 10, page: 2 })
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 deployments(project, options = {})
19
+ get("/projects/#{url_encode project}/deployments", query: options)
20
+ end
21
+
22
+ # Gets a single deployment.
23
+ #
24
+ # @example
25
+ # Gitlab.deployment(5, 36)
26
+ #
27
+ # @param [Integer, String] project The ID or name of a project.
28
+ # @param [Integer] id The ID of an deployment.
29
+ # @return [Gitlab::ObjectifiedHash]
30
+ def deployment(project, id)
31
+ get("/projects/#{url_encode project}/deployments/#{id}")
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to environments.
5
+ # @see https://docs.gitlab.com/ce/api/environments.html
6
+ module Environments
7
+ # Gets a list of project environments.
8
+ #
9
+ # @example
10
+ # Gitlab.environments(5)
11
+ # Gitlab.environments(5, { per_page: 10, page: 2 })
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 environments(project, options = {})
19
+ get("/projects/#{url_encode project}/environments", query: options)
20
+ end
21
+
22
+ # Gets a single environment.
23
+ #
24
+ # @example
25
+ # Gitlab.environment(5, 36)
26
+ #
27
+ # @param [Integer, String] project The ID or name of a project.
28
+ # @param [Integer] id The ID of an environment.
29
+ # @return [Gitlab::ObjectifiedHash]
30
+ def environment(project, id)
31
+ get("/projects/#{url_encode project}/environments/#{id}")
32
+ end
33
+
34
+ # Create an environment.
35
+ #
36
+ # @examples
37
+ # Gitlab.create_environment(5, 'test-branch')
38
+ # Gitlab.create_environment(5, 'test-branch', external_url: 'https://test-branch.example.host.com')
39
+ #
40
+ # @param [Integer, String] project The ID or name of a project.
41
+ # @param [String] env_name Name for the environment
42
+ # @option options [String] :external_url Optional URL for viewing the deployed project in this environment
43
+ # @return [Gitlab::ObjectifiedHash] The updated environment.
44
+ def create_environment(project, env_name, options = {})
45
+ body = { name: env_name }.merge(options)
46
+ post("/projects/#{url_encode project}/environments", body: body)
47
+ end
48
+
49
+ # Update an environment.
50
+ #
51
+ # @examples
52
+ # Gitlab.edit_environment(5, 36, name: 'test-branch')
53
+ # Gitlab.edit_environment(5, 36, external_url: 'https://test-branch.example.host.com')
54
+ #
55
+ # @param [Integer, String] project The ID or name of a project.
56
+ # @param [Integer] id The ID of an environment.
57
+ # @param [Hash] options A hash of the attribute keys & values to update.
58
+ # @option options [String] env_name Name for the environment
59
+ # @option options [String] external_url Optional URL for viewing the deployed project in this environment
60
+ # @return [Gitlab::ObjectifiedHash] The updated environment.
61
+ def edit_environment(project, id, options = {})
62
+ put("/projects/#{url_encode project}/environments/#{id}", body: options)
63
+ end
64
+
65
+ # Deletes an environment.
66
+ #
67
+ # @example
68
+ # Gitlab.delete_environment(5, 36)
69
+ #
70
+ # @param [Integer, String] project The ID or name of a project.
71
+ # @param [Integer] id The ID of an environment.
72
+ # @return [Gitlab::ObjectifiedHash] Information about the deleted environment.
73
+ def delete_environment(project, id)
74
+ delete("/projects/#{url_encode project}/environments/#{id}")
75
+ end
76
+
77
+ # Stop an environment.
78
+ #
79
+ # @example
80
+ # Gitlab.stop_environment(5, 36)
81
+ #
82
+ # @param [Integer, String] project The ID or name of a project.
83
+ # @param [Integer] id The ID of an environment.
84
+ # @return [Array<Gitlab::ObjectifiedHash>] The stopped environment.
85
+ def stop_environment(project, id)
86
+ post("/projects/#{url_encode project}/environments/#{id}/stop")
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to issues.
5
+ # @see https://docs.gitlab.com/ee/api/epic_issues.html
6
+ module EpicIssues
7
+ # List issues for an epic.
8
+ # Gets all issues that are assigned to an epic and the authenticated user has access to..
9
+ # @example
10
+ # Gitlab.epic_issues(5, 7)
11
+ # Gitlab.epic_issues(5, 7, { per_page: 40 })
12
+ #
13
+ # @param [Integer, String] group The ID or name of a group.
14
+ # @param [Integer] epic The iid of an epic.
15
+ # @param [Hash] options A customizable set of options.
16
+ # @option options [Integer] :page The page number.
17
+ # @option options [Integer] :per_page The number of results per page.
18
+ # @return [Array<Gitlab::ObjectifiedHash>]
19
+ def epic_issues(group, epic, options = {})
20
+ get("/groups/#{url_encode group}/epics/#{epic}/issues", query: options)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to Epics.
5
+ # @see https://docs.gitlab.com/ee/api/epics.html
6
+ module Epics
7
+ # Gets a list of epics.
8
+ #
9
+ # @example
10
+ # Gitlab.epics(123)
11
+ # Gitlab.epics(123, { per_page: 40, page: 2 })
12
+ #
13
+ # @param [Integer] group_id The ID of a group.
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 epics(group_id, options = {})
19
+ get("/groups/#{group_id}/epics", query: options)
20
+ end
21
+
22
+ # Gets a single epic.
23
+ #
24
+ # @example
25
+ # Gitlab.epic(123, 1)
26
+ #
27
+ # @param [Integer] group_id The ID of a group.
28
+ # @param [Integer] epic_iid The ID of a epic.
29
+ # @param [Hash] options A customizable set of options.
30
+ # @return [Gitlab::ObjectifiedHash]
31
+ def epic(group_id, epic_iid, options = {})
32
+ get("/groups/#{group_id}/epics/#{epic_iid}", query: options)
33
+ end
34
+
35
+ # Creates a new epic.
36
+ #
37
+ # @example
38
+ # Gitlab.create_epic(123, "My new epic title")
39
+ #
40
+ # @param [Integer] group_id The ID of a group.
41
+ # @param [String] title
42
+ # @param [Hash] options A customizable set of options.
43
+ # @return [Gitlab::ObjectifiedHash] Information about created epic.
44
+ def create_epic(group_id, title, options = {})
45
+ body = options.merge(title: title)
46
+ post("/groups/#{group_id}/epics", body: body)
47
+ end
48
+
49
+ # Deletes an epic.
50
+ #
51
+ # @example
52
+ # Gitlab.delete_epic(42, 123)
53
+ # @param [Integer] group_id The ID of a group.
54
+ # @param [Integer] epic_iid The IID of an epic.
55
+ def delete_epic(group_id, epic_iid)
56
+ delete("/groups/#{group_id}/epics/#{epic_iid}")
57
+ end
58
+
59
+ # Updates an existing epic.
60
+ #
61
+ # @example
62
+ # Gitlab.edit_epic(42)
63
+ # Gitlab.edit_epic(42, 123, { title: 'New epic title' })
64
+ #
65
+ # @param [Integer] group_id The ID.
66
+ # @param [Integer] epic_iid The IID of an epic.
67
+ # @param [Hash] options A customizable set of options
68
+ # @return [Gitlab::ObjectifiedHash] Information about the edited epic.
69
+ def edit_epic(group_id, epic_iid, options = {})
70
+ put("/groups/#{group_id}/epics/#{epic_iid}", body: options)
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to events.
5
+ # @see https://docs.gitlab.com/ce/api/events.html
6
+ module Events
7
+ # Gets a list of authenticated user's events
8
+ #
9
+ # @example
10
+ # Gitlab.events()
11
+ # Gitlab.events({ action: 'created', target_type: 'issue' })
12
+ #
13
+ # @param [Hash] options A customizable set of options.
14
+ # @option options [String] :action Only events of specific action type
15
+ # @option options [String] :target_type Only events of specific target type
16
+ # @option options [String] :before Only events created before YYYY-MM-DD
17
+ # @option options [String] :after Only events created after YYYY-MM-DD
18
+ # @option options [String] :sort Sort by created_at either 'asc' or 'desc'
19
+ # @return [Array<Gitlab::ObjectifiedHash>]
20
+ def events(options = {})
21
+ get('/events', query: options)
22
+ end
23
+
24
+ # Gets a list of user contribution events
25
+ #
26
+ # @example
27
+ # Gitlab.user_events(1)
28
+ # Gitlab.user_events(1, { action: created})
29
+ #
30
+ # @param [Integer, String] user The ID or username of user
31
+ # @param [Hash] options A customizable set of options.
32
+ # @option options [String] :action Only events of specific action type
33
+ # @option options [String] :target_type Only events of specific target type
34
+ # @option options [String] :before Only events created before YYYY-MM-DD
35
+ # @option options [String] :after Only events created after YYYY-MM-DD
36
+ # @option options [String] :sort Sort by created_at either 'asc' or 'desc'
37
+ # @return [Array<Gitlab::ObjectifiedHash>]
38
+ def user_events(user, options = {})
39
+ get("/users/#{url_encode user}/events", query: options)
40
+ end
41
+
42
+ # Gets a list of visible project events
43
+ #
44
+ # @example
45
+ # Gitlab.project_events(1)
46
+ # Gitlab.project_events(1, { action: created })
47
+ #
48
+ # @param [Integer] project The ID of project
49
+ # @param [Hash] options A customizable set of options.
50
+ # @option options [String] :action Only events of specific action type
51
+ # @option options [String] :target_type Only events of specific target type
52
+ # @option options [String] :before Only events created before YYYY-MM-DD
53
+ # @option options [String] :after Only events created after YYYY-MM-DD
54
+ # @option options [String] :sort Sort by created_at either 'asc' or 'desc'
55
+ # @return [Array<Gitlab::ObjectifiedHash>]
56
+ def project_events(project, options = {})
57
+ get("/projects/#{url_encode project}/events", query: options)
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to feature flags.
5
+ # https://docs.gitlab.com/ce/api/features.html
6
+ module Features
7
+ # Get a list of all persisted features, with its gate values.
8
+ #
9
+ # @example
10
+ # Gitlab.features
11
+ #
12
+ # @return [Array<Gitlab::ObjectifiedHash>]
13
+ def features
14
+ get('/features')
15
+ end
16
+
17
+ # Set a features gate value.
18
+ # If a feature with the given name does not exist yet it will be created. The value can be a boolean, or an integer to indicate percentage of time.
19
+ #
20
+ # @example
21
+ # Gitlab.set_feature('new_library', true)
22
+ # Gitlab.set_feature('new_library', 8)
23
+ # Gitlab.set_feature('new_library', true, {user: 'gitlab'})
24
+ #
25
+ # @param [String] name(required) Name of the feature to create or update
26
+ # @param [String, Integer] value(required) true or false to enable/disable, or an integer for percentage of time
27
+ # @param [Hash] options A customizable set of options.
28
+ # @option options [String] :feature_group(optional) A Feature group name
29
+ # @option options [String] :user(optional) A GitLab username
30
+ # @option options [String] :project(optional) A projects path, for example "gitlab-org/gitlab-ce"
31
+ # @return [Gitlab::ObjectifiedHash] Information about the set/created/updated feature.
32
+ def set_feature(name, value, options = {})
33
+ body = { value: value }.merge(options)
34
+ post("/features/#{name}", body: body)
35
+ end
36
+
37
+ # Delete a feature.
38
+ #
39
+ # @example
40
+ # Gitlab.delete_feature('new_library')
41
+ #
42
+ # @param [String] name Name of the feature to delete
43
+ # @return [void] This API call returns an empty response body.
44
+ def delete_feature(name)
45
+ delete("/features/#{name}")
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to group badges.
5
+ # @see https://docs.gitlab.com/ee/api/group_badges.html
6
+ module GroupBadges
7
+ # Gets a list of a groups badges.
8
+ #
9
+ # @example
10
+ # Gitlab.group_badges(5)
11
+ # Gitlab.group_badges(5, 'Coverage')
12
+ #
13
+ # @param [Integer, String] group(required) The ID or URL-encoded path of the group owned by the authenticated user.
14
+ # @param [String] name(optional) Name of the badges to return (case-sensitive).
15
+ # @return [Array<Gitlab::ObjectifiedHash>] List of all badges of a group
16
+ def group_badges(group, name = nil)
17
+ query = { name: name } if name
18
+ get("/groups/#{url_encode group}/badges", query: query)
19
+ end
20
+
21
+ # Gets a badge of a group.
22
+ #
23
+ # @example
24
+ # Gitlab.group_badge(5, 42)
25
+ #
26
+ # @param [Integer, String] group(required) The ID or URL-encoded path of the group owned by the authenticated user.
27
+ # @param [Integer] badge_id(required) The badge ID.
28
+ # @return [Gitlab::ObjectifiedHash] Information about the requested badge
29
+ def group_badge(group, badge_id)
30
+ get("/groups/#{url_encode group}/badges/#{badge_id}")
31
+ end
32
+
33
+ # Adds a badge to a group.
34
+ #
35
+ # @example
36
+ # Gitlab.add_group_badge(5, { link_url: 'https://abc.com/gitlab/gitlab-ce/commits/master', image_url: 'https://shields.io/my/badge1' })
37
+ #
38
+ # @param [Integer, String] group(required) The ID or URL-encoded path of the group owned by the authenticated user.
39
+ # @param [Hash] options A customizable set of options.
40
+ # @option options [String] :link_url(required) URL of the badge link
41
+ # @option options [String] :image_url(required) URL of the badge image
42
+ # @return [Gitlab::ObjectifiedHash] Information about the added group badge.
43
+ def add_group_badge(group, options = {})
44
+ post("/groups/#{url_encode group}/badges", body: options)
45
+ end
46
+
47
+ # Updates a badge of a group.
48
+ #
49
+ # @example
50
+ # Gitlab.edit_group_badge(5, 1, { link_url: 'https://abc.com/gitlab/gitlab-ce/commits/master', image_url: 'https://shields.io/my/badge1' })
51
+ #
52
+ # @param [Integer, String] group(required) The ID or URL-encoded path of the group owned by the authenticated user.
53
+ # @param [Integer] badge_id(required) The badge ID.
54
+ # @param [Hash] options A customizable set of options.
55
+ # @option options [String] :link_url(optional) URL of the badge link
56
+ # @option options [String] :image_url(optional) URL of the badge image
57
+ # @return [Gitlab::ObjectifiedHash] Information about the updated group badge.
58
+ def edit_group_badge(group, badge_id, options = {})
59
+ put("/groups/#{url_encode group}/badges/#{badge_id}", body: options)
60
+ end
61
+
62
+ # Removes a badge from a group.
63
+ #
64
+ # @example
65
+ # Gitlab.remove_group_badge(5, 42)
66
+ #
67
+ # @param [Integer, String] group(required) The ID or URL-encoded path of the group owned by the authenticated user.
68
+ # @param [Integer] badge_id(required) The badge ID.
69
+ # @return [nil] This API call returns an empty response body.
70
+ def remove_group_badge(group, badge_id)
71
+ delete("/groups/#{url_encode group}/badges/#{badge_id}")
72
+ end
73
+
74
+ # Preview a badge from a group.
75
+ #
76
+ # @example
77
+ # Gitlab.preview_group_badge(3, 'https://abc.com/gitlab/gitlab-ce/commits/master', 'https://shields.io/my/badge1')
78
+ #
79
+ # @param [Integer, String] group(required) The ID or URL-encoded path of the group owned by the authenticated user.
80
+ # @param [String] :link_url(required) URL of the badge link
81
+ # @param [String] :image_url(required) URL of the badge image
82
+ # @return [Gitlab::ObjectifiedHash] Returns how the link_url and image_url final URLs would be after resolving the placeholder interpolation.
83
+ def preview_group_badge(group, link_url, image_url)
84
+ query = { link_url: link_url, image_url: image_url }
85
+ get("/groups/#{url_encode group}/badges/render", query: query)
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,141 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Client
4
+ # Defines methods related to group issue boards.
5
+ # @see https://docs.gitlab.com/ee/api/group_boards.html
6
+ module GroupBoards
7
+ # Lists Issue Boards in the given group.
8
+ #
9
+ # @example
10
+ # Gitlab.group_boards(5)
11
+ #
12
+ # @param [Integer, String] group The ID or name of a group.
13
+ # @return [Array<Gitlab::ObjectifiedHash>] List of issue boards of the group
14
+ def group_boards(group)
15
+ get("/groups/#{url_encode group}/boards")
16
+ end
17
+
18
+ # Gets a single group issue board.
19
+ #
20
+ # @example
21
+ # Gitlab.group_board(5, 1)
22
+ #
23
+ # @param [Integer, String] group The ID or name of a group.
24
+ # @param [Integer] id The ID of the issue board.
25
+ # @return [Gitlab::ObjectifiedHash] Returns information about a group issue board
26
+ def group_board(group, id)
27
+ get("/groups/#{url_encode group}/boards/#{id}")
28
+ end
29
+
30
+ # Creates a new group issue board.
31
+ #
32
+ # @example
33
+ # Gitlab.create_group_board(5, 'Documentcloud')
34
+ #
35
+ # @param [Integer, String] group The ID or name of a group.
36
+ # @param [String] name The name of the new board.
37
+ # @return [Gitlab::ObjectifiedHash] Information about created group issue board.
38
+ def create_group_board(group, name)
39
+ body = { name: name }
40
+ post("/groups/#{url_encode group}/boards", body: body)
41
+ end
42
+
43
+ # Updates a group issue board.
44
+ #
45
+ # @example
46
+ # Gitlab.edit_group_board(5, 1, { name: 'DocumentCloud2' })
47
+ # Gitlab.edit_group_board(5, 1, { name: 'DocumentCloud2', assignee_id: 3 })
48
+ #
49
+ # @param [Integer, String] group The ID or name of a group.
50
+ # @param [Integer] id The ID of the issue board.
51
+ # @param [Hash] options A customizable set of options.
52
+ # @option options [String] :name(optional) The new name of the board.
53
+ # @option options [Integer] :assignee_id(optional) The assignee the board should be scoped to.
54
+ # @option options [Integer] :milestone_id(optional) The milestone the board should be scoped to.
55
+ # @option options [String] :labels(optional) Comma-separated list of label names which the board should be scoped to.
56
+ # @option options [Integer] :weight(optional) The weight range from 0 to 9, to which the board should be scoped to.
57
+ # @return [Gitlab::ObjectifiedHash] Information about updated group issue board.
58
+ def edit_group_board(group, id, options = {})
59
+ put("/groups/#{url_encode group}/boards/#{id}", body: options)
60
+ end
61
+
62
+ # Deletes a group issue board.
63
+ #
64
+ # @example
65
+ # Gitlab.delete_group_board(5, 1)
66
+ #
67
+ # @param [Integer, String] group The ID or name of a group.
68
+ # @param [Integer] id The ID of the issue board.
69
+ # @return [void] This API call returns an empty response body.
70
+ def delete_group_board(group, id)
71
+ delete("/groups/#{url_encode group}/boards/#{id}")
72
+ end
73
+
74
+ # Get a list of the boards lists. Does not include open and closed lists
75
+ #
76
+ # @example
77
+ # Gitlab.group_board_lists(5, 1)
78
+ #
79
+ # @param [Integer, String] group The ID or name of a group.
80
+ # @param [Integer] board_id The ID of the group issue board.
81
+ # @return [Array<Gitlab::ObjectifiedHash>] List of boards lists of the group
82
+ def group_board_lists(group, board_id)
83
+ get("/groups/#{url_encode group}/boards/#{board_id}/lists")
84
+ end
85
+
86
+ # Get a single group issue board list.
87
+ #
88
+ # @example
89
+ # Gitlab.group_board_list(5, 1, 1)
90
+ #
91
+ # @param [Integer, String] group The ID or name of a group.
92
+ # @param [Integer] board_id The ID of the group issue board.
93
+ # @param [Integer] list_id The ID of a boards list.
94
+ # @return [Gitlab::ObjectifiedHash] Returns information about a single group issue board list
95
+ def group_board_list(group, board_id, id)
96
+ get("/groups/#{url_encode group}/boards/#{board_id}/lists/#{id}")
97
+ end
98
+
99
+ # Creates a new group issue board list.
100
+ #
101
+ # @example
102
+ # Gitlab.create_group_board_list(5, 1)
103
+ #
104
+ # @param [Integer, String] group The ID or name of a group.
105
+ # @param [Integer] board_id The ID of the group issue board.
106
+ # @param [Integer] label_id The ID of a label.
107
+ # @return [Gitlab::ObjectifiedHash] Information about created group issue board list.
108
+ def create_group_board_list(group, board_id, label_id)
109
+ body = { label_id: label_id }
110
+ post("/groups/#{url_encode group}/boards/#{board_id}/lists", body: body)
111
+ end
112
+
113
+ # Updates an existing group issue board list. This call is used to change list position.
114
+ #
115
+ # @example
116
+ # Gitlab.edit_group_board_list(5, 1, 1, { position: 1 })
117
+ #
118
+ # @param [Integer, String] group The ID or name of a group.
119
+ # @param [Integer] board_id The ID of the group issue board.
120
+ # @param [Integer] list_id The ID of a boards list.
121
+ # @param [Hash] options A customizable set of options.
122
+ # @option options [String] :position(required) The position of the list.
123
+ # @return [Gitlab::ObjectifiedHash] Information about updated group issue board list.
124
+ def edit_group_board_list(group, board_id, id, options = {})
125
+ put("/groups/#{url_encode group}/boards/#{board_id}/lists/#{id}", body: options)
126
+ end
127
+
128
+ # Deletes a group issue board list.
129
+ #
130
+ # @example
131
+ # Gitlab.delete_group_board_list(5, 1, 1)
132
+ #
133
+ # @param [Integer, String] group The ID or name of a group.
134
+ # @param [Integer] board_id The ID of the group issue board.
135
+ # @param [Integer] list_id The ID of a boards list.
136
+ # @return [void] This API call returns an empty response body.
137
+ def delete_group_board_list(group, board_id, id)
138
+ delete("/groups/#{url_encode group}/boards/#{board_id}/lists/#{id}")
139
+ end
140
+ end
141
+ end