gitlab 3.6.1 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/.travis.yml +2 -0
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +9 -2
  4. data/gitlab.gemspec +5 -1
  5. data/lib/gitlab.rb +3 -2
  6. data/lib/gitlab/cli_helpers.rb +8 -3
  7. data/lib/gitlab/client.rb +6 -0
  8. data/lib/gitlab/client/build_triggers.rb +51 -0
  9. data/lib/gitlab/client/build_variables.rb +66 -0
  10. data/lib/gitlab/client/builds.rb +106 -0
  11. data/lib/gitlab/client/commits.rb +5 -5
  12. data/lib/gitlab/client/groups.rb +36 -3
  13. data/lib/gitlab/client/issues.rb +16 -3
  14. data/lib/gitlab/client/labels.rb +2 -2
  15. data/lib/gitlab/client/merge_requests.rb +49 -8
  16. data/lib/gitlab/client/milestones.rb +1 -1
  17. data/lib/gitlab/client/notes.rb +28 -1
  18. data/lib/gitlab/client/projects.rb +60 -7
  19. data/lib/gitlab/client/repositories.rb +1 -32
  20. data/lib/gitlab/client/runners.rb +115 -0
  21. data/lib/gitlab/client/services.rb +48 -0
  22. data/lib/gitlab/client/snippets.rb +2 -2
  23. data/lib/gitlab/client/tags.rb +96 -0
  24. data/lib/gitlab/client/users.rb +72 -2
  25. data/lib/gitlab/error.rb +53 -10
  26. data/lib/gitlab/file_response.rb +45 -0
  27. data/lib/gitlab/help.rb +1 -0
  28. data/lib/gitlab/objectified_hash.rb +1 -1
  29. data/lib/gitlab/paginated_response.rb +2 -2
  30. data/lib/gitlab/request.rb +13 -34
  31. data/lib/gitlab/version.rb +1 -1
  32. data/spec/fixtures/build.json +38 -0
  33. data/spec/fixtures/build_artifacts.json +0 -0
  34. data/spec/fixtures/build_cancel.json +24 -0
  35. data/spec/fixtures/build_erase.json +24 -0
  36. data/spec/fixtures/build_retry.json +24 -0
  37. data/spec/fixtures/builds.json +78 -0
  38. data/spec/fixtures/builds_commits.json +64 -0
  39. data/spec/fixtures/error_project_not_found.json +1 -0
  40. data/spec/fixtures/git_hook.json +1 -0
  41. data/spec/fixtures/group_delete.json +1 -0
  42. data/spec/fixtures/group_member_edit.json +1 -0
  43. data/spec/fixtures/group_projects.json +44 -0
  44. data/spec/fixtures/merge_request_commits.json +1 -0
  45. data/spec/fixtures/project_runner_enable.json +7 -0
  46. data/spec/fixtures/project_runners.json +16 -0
  47. data/spec/fixtures/release_create.json +1 -0
  48. data/spec/fixtures/release_update.json +1 -0
  49. data/spec/fixtures/runner.json +26 -0
  50. data/spec/fixtures/runner_delete.json +7 -0
  51. data/spec/fixtures/runner_edit.json +26 -0
  52. data/spec/fixtures/runners.json +16 -0
  53. data/spec/fixtures/runners_all.json +30 -0
  54. data/spec/fixtures/service.json +1 -0
  55. data/spec/fixtures/tag.json +1 -0
  56. data/spec/fixtures/tag_create.json +1 -0
  57. data/spec/fixtures/tag_create_with_description.json +1 -0
  58. data/spec/fixtures/tag_delete.json +1 -0
  59. data/spec/fixtures/tags.json +1 -0
  60. data/spec/fixtures/trigger.json +7 -0
  61. data/spec/fixtures/triggers.json +16 -0
  62. data/spec/fixtures/user_email.json +1 -0
  63. data/spec/fixtures/user_emails.json +1 -0
  64. data/spec/fixtures/user_search.json +1 -0
  65. data/spec/fixtures/variable.json +4 -0
  66. data/spec/fixtures/variables.json +10 -0
  67. data/spec/gitlab/client/build_triggers_spec.rb +67 -0
  68. data/spec/gitlab/client/build_variables_spec.rb +86 -0
  69. data/spec/gitlab/client/builds_spec.rb +148 -0
  70. data/spec/gitlab/client/groups_spec.rb +51 -0
  71. data/spec/gitlab/client/issues_spec.rb +16 -0
  72. data/spec/gitlab/client/merge_requests_spec.rb +27 -4
  73. data/spec/gitlab/client/notes_spec.rb +32 -0
  74. data/spec/gitlab/client/projects_spec.rb +79 -0
  75. data/spec/gitlab/client/runners_spec.rb +185 -0
  76. data/spec/gitlab/client/services_spec.rb +55 -0
  77. data/spec/gitlab/client/tags_spec.rb +109 -0
  78. data/spec/gitlab/client/users_spec.rb +136 -0
  79. data/spec/gitlab/error_spec.rb +45 -0
  80. data/spec/gitlab/file_response_spec.rb +28 -0
  81. data/spec/gitlab/help_spec.rb +6 -1
  82. data/spec/gitlab/request_spec.rb +0 -27
  83. data/spec/gitlab/shell_spec.rb +1 -1
  84. data/spec/spec_helper.rb +2 -2
  85. metadata +131 -23
  86. checksums.yaml +0 -7
@@ -4,3 +4,5 @@ rvm:
4
4
  - 2.0
5
5
  - 2.1
6
6
  - 2.2
7
+ - 2.3.0
8
+ before_install: gem update bundler
@@ -1,5 +1,30 @@
1
1
  ## Change Log
2
2
 
3
+ ### 3.7.0 (16/08/2016)
4
+
5
+ - Add in GitlabCI Runner support (@davidcollum)
6
+ - Implemented tags API methods (@jblackman)
7
+ - Expose response status when Gitlab raises an error. (@calavera)
8
+ - Add `build_artifacts` method (@nanofi)
9
+ - Add `user_search` method (@Dreeg)
10
+ - Added project git hook support (@liger1978)
11
+ - Add the ability to delete an issue (@dandunckelman)
12
+ - Add missing Build APIs (@edgemaster)
13
+ - Improve record table output to use Hash `id` field if it exists. (@asedge)
14
+ - Support for listing merge request notes (@dlukman)
15
+ - Update YARD so it can be formatted easier for the CLI. (@asedge)
16
+ - Add `options` to `build` method (@sanderhahn)
17
+ - Add `delete_group` method (@shadeslayer)
18
+ - Add `group_projects` method (@shadeslayer)
19
+ - Add `edit_merge_request_comment` (@hjanuschka)
20
+ - Add `merge_request_commits` method (@nomeaning777)
21
+ - Add method `edit_group_member` (@coder-hugo)
22
+ - New builds endpoints (@kmarcisz)
23
+ - Use `respond_to_missing?` instead of `respond_to?` (@tsigo)
24
+ - Added possibility to change emails of user (@azomazo)
25
+ - Added possibility to change services in the project (@azomazo)
26
+ - Update README.md (@walterheck)
27
+
3
28
  ### 3.6.1 (13/12/2015)
4
29
 
5
30
  - Fixed CLI output for collections
data/README.md CHANGED
@@ -105,8 +105,7 @@ For more information, refer to [documentation](http://rubydoc.info/gems/gitlab/f
105
105
 
106
106
  ## CLI
107
107
 
108
- Configuration example:
109
-
108
+ It is possible to use this gem as a command line interface to gitlab. In order to make that work you need to set a few environment variables:
110
109
  ```sh
111
110
  export GITLAB_API_ENDPOINT=https://gitlab.yourcompany.com/api/v3
112
111
  export GITLAB_API_PRIVATE_TOKEN=<your private token from /profile/account>
@@ -116,16 +115,23 @@ export GITLAB_API_PRIVATE_TOKEN=<your private token from /profile/account>
116
115
  export GITLAB_API_HTTPARTY_OPTIONS="{verify: false}"
117
116
  ```
118
117
 
118
+ Usage:
119
+
120
+ When you want to know which CLI commands are supported, take a look at the client [commands implemented in this gem](http://www.rubydoc.info/gems/gitlab/3.4.0/Gitlab/Client). Any of those methods can be called as a command by passing the parameters of the commands as parameters of the CLI.
121
+
119
122
  Usage examples:
120
123
 
121
124
  ```sh
122
125
  # list users
126
+ # see: http://www.rubydoc.info/gems/gitlab/3.4.0/Gitlab/Client/Users#users-instance_method
123
127
  gitlab users
124
128
 
125
129
  # get current user
130
+ # see: http://www.rubydoc.info/gems/gitlab/3.4.0/Gitlab/Client/Users#user-instance_method
126
131
  gitlab user
127
132
 
128
133
  # get a user
134
+ # see: http://www.rubydoc.info/gems/gitlab/3.4.0/Gitlab/Client/Users#user-instance_method
129
135
  gitlab user 2
130
136
 
131
137
  # filter output
@@ -137,6 +143,7 @@ gitlab user --except=email,bio
137
143
  gitlab user 2 --json
138
144
 
139
145
  # passing options hash to a command (use YAML)
146
+ # see: http://www.rubydoc.info/gems/gitlab/3.4.0/Gitlab/Client/MergeRequests#create_merge_request-instance_method
140
147
  gitlab create_merge_request 4 "New merge request" "{source_branch: 'new_branch', target_branch: 'master', assignee_id: 42}"
141
148
 
142
149
  ```
@@ -19,7 +19,11 @@ Gem::Specification.new do |gem|
19
19
  gem.require_paths = ["lib"]
20
20
  gem.license = "BSD"
21
21
 
22
- gem.add_runtime_dependency 'httparty'
22
+ if RUBY_VERSION < '2.0'
23
+ gem.add_runtime_dependency 'httparty', '~> 0.13.0'
24
+ else
25
+ gem.add_runtime_dependency 'httparty'
26
+ end
23
27
  gem.add_runtime_dependency 'terminal-table'
24
28
 
25
29
  gem.add_development_dependency 'pry'
@@ -4,6 +4,7 @@ require 'gitlab/configuration'
4
4
  require 'gitlab/error'
5
5
  require 'gitlab/page_links'
6
6
  require 'gitlab/paginated_response'
7
+ require 'gitlab/file_response'
7
8
  require 'gitlab/request'
8
9
  require 'gitlab/api'
9
10
  require 'gitlab/client'
@@ -25,8 +26,8 @@ module Gitlab
25
26
  end
26
27
 
27
28
  # Delegate to Gitlab::Client
28
- def self.respond_to?(method)
29
- client.respond_to?(method) || super
29
+ def respond_to_missing?(method_name, include_private = false)
30
+ client.respond_to?(method_name) || super
30
31
  end
31
32
 
32
33
  # Delegate to HTTParty.http_proxy
@@ -1,5 +1,6 @@
1
1
  require 'yaml'
2
2
  require 'json'
3
+ require 'base64'
3
4
 
4
5
  class Gitlab::CLI
5
6
  # Defines methods related to CLI output and formatting.
@@ -91,7 +92,7 @@ class Gitlab::CLI
91
92
  # Outputs a nicely formatted table or error msg.
92
93
  def output_table(cmd, args, data)
93
94
  case data
94
- when Gitlab::ObjectifiedHash
95
+ when Gitlab::ObjectifiedHash, Gitlab::FileResponse
95
96
  puts record_table([data], cmd, args)
96
97
  when Gitlab::PaginatedResponse
97
98
  puts record_table(data, cmd, args)
@@ -105,7 +106,7 @@ class Gitlab::CLI
105
106
  puts '{}'
106
107
  else
107
108
  hash_result = case data
108
- when Gitlab::ObjectifiedHash
109
+ when Gitlab::ObjectifiedHash,Gitlab::FileResponse
109
110
  record_hash([data], cmd, args, true)
110
111
  when Gitlab::PaginatedResponse
111
112
  record_hash(data, cmd, args)
@@ -134,7 +135,9 @@ class Gitlab::CLI
134
135
  keys.each do |key|
135
136
  case value = hash[key]
136
137
  when Hash
137
- value = 'Hash'
138
+ value = value.has_key?('id') ? value['id'] : 'Hash'
139
+ when StringIO
140
+ value = 'File'
138
141
  when nil
139
142
  value = 'null'
140
143
  end
@@ -168,6 +171,8 @@ class Gitlab::CLI
168
171
  case hash[key]
169
172
  when Hash
170
173
  row[key] = 'Hash'
174
+ when StringIO
175
+ row[key] = Base64.encode64(hash[key].read)
171
176
  when nil
172
177
  row[key] = nil
173
178
  else
@@ -4,6 +4,9 @@ module Gitlab
4
4
  Dir[File.expand_path('../client/*.rb', __FILE__)].each { |f| require f }
5
5
 
6
6
  include Branches
7
+ include Builds
8
+ include BuildTriggers
9
+ include BuildVariables
7
10
  include Commits
8
11
  include Groups
9
12
  include Issues
@@ -15,8 +18,11 @@ module Gitlab
15
18
  include Projects
16
19
  include Repositories
17
20
  include RepositoryFiles
21
+ include Runners
22
+ include Services
18
23
  include Snippets
19
24
  include SystemHooks
25
+ include Tags
20
26
  include Users
21
27
  end
22
28
  end
@@ -0,0 +1,51 @@
1
+ class Gitlab::Client
2
+ # Defines methods related to builds.
3
+ # @see https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/build_triggers.md
4
+ module BuildTriggers
5
+ # Gets a list of the project's build triggers
6
+ #
7
+ # @example
8
+ # Gitlab.triggers(5)
9
+ #
10
+ # @param [Integer] project The ID of a project.
11
+ # @return [Array<Gitlab::ObjectifiedHash>] The list of triggers.
12
+ def triggers(project)
13
+ get("/projects/#{project}/triggers")
14
+ end
15
+
16
+ # Gets details of project's build trigger.
17
+ #
18
+ # @example
19
+ # Gitlab.trigger(5, '7b9148c158980bbd9bcea92c17522d')
20
+ #
21
+ # @param [Integer] project The ID of a project.
22
+ # @param [String] token The token of a trigger.
23
+ # @return [Gitlab::ObjectifiedHash] The trigger.
24
+ def trigger(project, token)
25
+ get("/projects/#{project}/triggers/#{token}")
26
+ end
27
+
28
+ # Create a build trigger for a project.
29
+ #
30
+ # @example
31
+ # Gitlab.create_trigger(5)
32
+ #
33
+ # @param [Integer] project The ID of a project.
34
+ # @return [Gitlab::ObjectifiedHash] The trigger.
35
+ def create_trigger(project)
36
+ post("/projects/#{project}/triggers")
37
+ end
38
+
39
+ # Remove a project's build trigger.
40
+ #
41
+ # @example
42
+ # Gitlab.remove_trigger(5, '7b9148c158980bbd9bcea92c17522d')
43
+ #
44
+ # @param [Integer] project The ID of a project.
45
+ # @param [String] token The token of a trigger.
46
+ # @return [Gitlab::ObjectifiedHash] The trigger.
47
+ def remove_trigger(project, token)
48
+ delete("/projects/#{project}/triggers/#{token}")
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,66 @@
1
+ class Gitlab::Client
2
+ # Defines methods related to builds.
3
+ # @see https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/build_variables.md
4
+ module BuildVariables
5
+ # Gets a list of the project's build variables
6
+ #
7
+ # @example
8
+ # Gitlab.variables(5)
9
+ #
10
+ # @param [Integer] project The ID of a project.
11
+ # @return [Array<Gitlab::ObjectifiedHash>] The list of variables.
12
+ def variables(project)
13
+ get("/projects/#{project}/variables")
14
+ end
15
+
16
+ # Gets details of a project's specific build variable.
17
+ #
18
+ # @example
19
+ # Gitlab.build(5, "TEST_VARIABLE_1")
20
+ #
21
+ # @param [Integer] project The ID of a project.
22
+ # @param [String] key The key of a variable.
23
+ # @return [Gitlab::ObjectifiedHash] The variable.
24
+ def variable(project, key)
25
+ get("/projects/#{project}/variables/#{key}")
26
+ end
27
+
28
+ # Create a build variable for a project.
29
+ #
30
+ # @example
31
+ # Gitlab.create_variable(5, "NEW_VARIABLE", "new value")
32
+ #
33
+ # @param [Integer] project The ID of a project.
34
+ # @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
35
+ # @param [String] value The value of a variable
36
+ # @return [Gitlab::ObjectifiedHash] The variable.
37
+ def create_variable(project, key, value)
38
+ post("/projects/#{project}/variables", body: { key: key, value: value })
39
+ end
40
+
41
+ # Update a project's build variable.
42
+ #
43
+ # @example
44
+ # Gitlab.create_variable(5, "NEW_VARIABLE", "updated value")
45
+ #
46
+ # @param [Integer] project The ID of a project.
47
+ # @param [String] key The key of a variable
48
+ # @param [String] value The value of a variable
49
+ # @return [Gitlab::ObjectifiedHash] The variable.
50
+ def update_variable(project, key, value)
51
+ put("/projects/#{project}/variables/#{key}", body: { value: value })
52
+ end
53
+
54
+ # Remove a project's build variable.
55
+ #
56
+ # @example
57
+ # Gitlab.remove_variable(5, "VARIABLE_1")
58
+ #
59
+ # @param [Integer] project The ID of a project.
60
+ # @param [String] key The key of a variable.
61
+ # @return [Gitlab::ObjectifiedHash] The variable.
62
+ def remove_variable(project, key)
63
+ delete("/projects/#{project}/variables/#{key}")
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,106 @@
1
+ class Gitlab::Client
2
+ # Defines methods related to builds.
3
+ # @see https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/builds.md
4
+ module Builds
5
+ # Gets a list of project builds.
6
+ #
7
+ # @example
8
+ # Gitlab.builds(5)
9
+ # Gitlab.builds(5, { per_page: 10, page: 2 })
10
+ #
11
+ # @param [Integer] project The ID of a project.
12
+ # @param [Hash] options A customizable set of options.
13
+ # @option options [Integer] :page The page number.
14
+ # @option options [Integer] :per_page The number of results per page.
15
+ # @param [Integer] project The ID of a project.
16
+ # @return [Array<Gitlab::ObjectifiedHash>]
17
+ def builds(project, options={})
18
+ get("/projects/#{project}/builds", query: options)
19
+ end
20
+
21
+ # Gets a single build.
22
+ #
23
+ # @example
24
+ # Gitlab.build(5, 36)
25
+ #
26
+ # @param [Integer] project The ID of a project.
27
+ # @param [Integer] id The ID of a build.
28
+ # @return [Gitlab::ObjectifiedHash]
29
+ def build(project, id)
30
+ get("/projects/#{project}/builds/#{id}")
31
+ end
32
+
33
+ # Gets build artifacts.
34
+ #
35
+ # @example
36
+ # Gitlab.build_artifacts(1, 8)
37
+ #
38
+ # @param [Integer] project The ID of a project.
39
+ # @param [Integer] id The ID of a build.
40
+ # @return [Gitlab::FileResponse]
41
+ def build_artifacts(project, id)
42
+ get("/projects/#{project}/builds/#{id}/artifacts",
43
+ format: nil,
44
+ headers: { Accept: 'application/octet-stream' },
45
+ parser: proc { |body, _|
46
+ if body.encoding == Encoding::ASCII_8BIT # binary response
47
+ ::Gitlab::FileResponse.new StringIO.new(body, 'rb+')
48
+ else # error with json response
49
+ ::Gitlab::Request.parse(body)
50
+ end
51
+ })
52
+ end
53
+
54
+ # Gets a list of builds for specific commit in a project.
55
+ #
56
+ # @example
57
+ # Gitlab.commit_builds(5, 'asdf')
58
+ # Gitlab.commit_builds(5, 'asdf', { per_page: 10, page: 2 })
59
+ #
60
+ # @param [Integer] project The ID of a project.
61
+ # @param [String] sha The SHA checksum of a commit.
62
+ # @param [Hash] options A customizable set of options.
63
+ # @option options [Integer] :page The page number.
64
+ # @option options [Integer] :per_page The number of results per page.
65
+ # @return [Array<Gitlab::ObjectifiedHash>] The list of builds.
66
+ def commit_builds(project, sha, options={})
67
+ get("/projects/#{project}/repository/commits/#{sha}/builds", query: options)
68
+ end
69
+
70
+ # Cancels a build.
71
+ #
72
+ # @example
73
+ # Gitlab.build_cancel(5, 1)
74
+ #
75
+ # @param [Integer] project The ID of a project.
76
+ # @param [Integer] id The ID of a build.
77
+ # @return [Gitlab::ObjectifiedHash] The builds changes.
78
+ def build_cancel(project, id)
79
+ post("/projects/#{project}/builds/#{id}/cancel")
80
+ end
81
+
82
+ # Retry a build.
83
+ #
84
+ # @example
85
+ # Gitlab.build_retry(5, 1)
86
+ #
87
+ # @param [Integer] project The ID of a project.
88
+ # @param [Integer] id The ID of a build.
89
+ # @return [Array<Gitlab::ObjectifiedHash>] The builds changes.
90
+ def build_retry(project, id)
91
+ post("/projects/#{project}/builds/#{id}/retry")
92
+ end
93
+
94
+ # Erase a single build of a project (remove build artifacts and a build trace)
95
+ #
96
+ # @example
97
+ # Gitlab.build_erase(5, 1)
98
+ #
99
+ # @param [Integer] project The ID of a project.
100
+ # @param [Integer] id The ID of a build.
101
+ # @return [Gitlab::ObjectifiedHash] The build's changes.
102
+ def build_erase(project, id)
103
+ post("/projects/#{project}/builds/#{id}/erase")
104
+ end
105
+ end
106
+ end
@@ -6,7 +6,7 @@ class Gitlab::Client
6
6
  #
7
7
  # @example
8
8
  # Gitlab.commits('viking')
9
- # Gitlab.repo_commits('gitlab', :ref_name => 'api')
9
+ # Gitlab.repo_commits('gitlab', { ref_name: 'api' })
10
10
  #
11
11
  # @param [Integer] project The ID of a project.
12
12
  # @param [Hash] options A customizable set of options.
@@ -84,8 +84,8 @@ class Gitlab::Client
84
84
  #
85
85
  # @example
86
86
  # Gitlab.commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
87
- # Gitlab.commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', name: 'jenkins')
88
- # Gitlab.commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', name: 'jenkins', all: true)
87
+ # Gitlab.commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', { name: 'jenkins' })
88
+ # Gitlab.commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', { name: 'jenkins', all: true })
89
89
  #
90
90
  # @param [Integer] project The ID of a project.
91
91
  # @param [String] sha The commit hash
@@ -103,8 +103,8 @@ class Gitlab::Client
103
103
  #
104
104
  # @example
105
105
  # Gitlab.update_commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'success')
106
- # Gitlab.update_commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'failed', name: 'jenkins')
107
- # Gitlab.update_commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'canceled', name: 'jenkins', target_url: 'http://example.com/builds/1')
106
+ # Gitlab.update_commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'failed', { name: 'jenkins' })
107
+ # Gitlab.update_commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'canceled', { name: 'jenkins', target_url: 'http://example.com/builds/1' })
108
108
  #
109
109
  # @param [Integer] project The ID of a project.
110
110
  # @param [String] sha The commit hash
@@ -6,7 +6,7 @@ class Gitlab::Client
6
6
  #
7
7
  # @example
8
8
  # Gitlab.groups
9
- # Gitlab.groups(:per_page => 40)
9
+ # Gitlab.groups({ per_page: 40, page: 2 })
10
10
  #
11
11
  # @param [Hash] options A customizable set of options.
12
12
  # @option options [Integer] :page The page number.
@@ -31,7 +31,7 @@ class Gitlab::Client
31
31
  #
32
32
  # @example
33
33
  # Gitlab.create_group('new-group', 'group-path')
34
- # Gitlab.create_group('gitlab', 'gitlab-path', :description => "New Gitlab project")
34
+ # Gitlab.create_group('gitlab', 'gitlab-path', { description: 'New Gitlab project' })
35
35
  #
36
36
  # @param [String] name The name of a group.
37
37
  # @param [String] path The path of a group.
@@ -41,11 +41,21 @@ class Gitlab::Client
41
41
  post("/groups", body: body)
42
42
  end
43
43
 
44
+ # Delete's a group.
45
+ #
46
+ # @example
47
+ # Gitlab.delete_group(42)
48
+ # @param [Integer] id The ID of a group
49
+ # @return [Gitlab::ObjectifiedHash] Information about the deleted group.
50
+ def delete_group(id)
51
+ delete("/groups/#{id}")
52
+ end
53
+
44
54
  # Get a list of group members.
45
55
  #
46
56
  # @example
47
57
  # Gitlab.group_members(1)
48
- # Gitlab.group_members(1, :per_page => 40)
58
+ # Gitlab.group_members(1, { per_page: 40 })
49
59
  #
50
60
  # @param [Integer] id The ID of a group.
51
61
  # @param [Hash] options A customizable set of options.
@@ -69,6 +79,19 @@ class Gitlab::Client
69
79
  post("/groups/#{team_id}/members", body: { user_id: user_id, access_level: access_level })
70
80
  end
71
81
 
82
+ # Edit a user of a group.
83
+ #
84
+ # @example
85
+ # Gitlab.edit_group_member(1, 2, 40)
86
+ #
87
+ # @param [Integer] team_id The group id of member to edit.
88
+ # @param [Integer] user_id The user id of the user to edit.
89
+ # @param [Integer] access_level Project access level.
90
+ # @return [Gitlab::ObjectifiedHash] Information about edited team member.
91
+ def edit_group_member(team_id, user_id, access_level)
92
+ put("/groups/#{team_id}/members/#{user_id}", body: { access_level: access_level })
93
+ end
94
+
72
95
  # Removes user from user group.
73
96
  #
74
97
  # @example
@@ -107,5 +130,15 @@ class Gitlab::Client
107
130
  options[:search] = search
108
131
  get("/groups", query: options)
109
132
  end
133
+
134
+ # Get a list of projects under a group
135
+ # @example
136
+ # Gitlab.group_projects(1)
137
+ #
138
+ # @param [Integer] id The ID of a group
139
+ # @return [Array<Gitlab::ObjectifiedHash>] List of projects under a group
140
+ def group_projects(id, options={})
141
+ get("/groups/#{id}/projects", query: options)
142
+ end
110
143
  end
111
144
  end