gitlab 3.7.0 → 4.0.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 (55) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.travis.yml +2 -2
  4. data/CHANGELOG.md +24 -0
  5. data/README.md +7 -6
  6. data/gitlab.gemspec +4 -6
  7. data/lib/gitlab/client.rb +24 -0
  8. data/lib/gitlab/client/branches.rb +13 -13
  9. data/lib/gitlab/client/build_triggers.rb +9 -9
  10. data/lib/gitlab/client/build_variables.rb +11 -11
  11. data/lib/gitlab/client/builds.rb +16 -16
  12. data/lib/gitlab/client/commits.rb +39 -14
  13. data/lib/gitlab/client/groups.rb +1 -1
  14. data/lib/gitlab/client/issues.rb +40 -16
  15. data/lib/gitlab/client/labels.rb +9 -9
  16. data/lib/gitlab/client/merge_requests.rb +61 -24
  17. data/lib/gitlab/client/milestones.rb +25 -11
  18. data/lib/gitlab/client/namespaces.rb +2 -1
  19. data/lib/gitlab/client/notes.rb +16 -16
  20. data/lib/gitlab/client/pipelines.rb +68 -0
  21. data/lib/gitlab/client/projects.rb +111 -49
  22. data/lib/gitlab/client/repositories.rb +27 -23
  23. data/lib/gitlab/client/repository_files.rb +29 -10
  24. data/lib/gitlab/client/runners.rb +15 -15
  25. data/lib/gitlab/client/services.rb +8 -6
  26. data/lib/gitlab/client/snippets.rb +13 -13
  27. data/lib/gitlab/client/system_hooks.rb +1 -1
  28. data/lib/gitlab/client/tags.rb +13 -13
  29. data/lib/gitlab/client/users.rb +12 -5
  30. data/lib/gitlab/file_response.rb +1 -0
  31. data/lib/gitlab/version.rb +1 -1
  32. data/spec/fixtures/merge_request_closes_issues.json +1 -0
  33. data/spec/fixtures/milestone_merge_requests.json +1 -0
  34. data/spec/fixtures/pipeline.json +23 -0
  35. data/spec/fixtures/pipeline_cancel.json +23 -0
  36. data/spec/fixtures/pipeline_create.json +23 -0
  37. data/spec/fixtures/pipeline_retry.json +23 -0
  38. data/spec/fixtures/pipelines.json +48 -0
  39. data/spec/fixtures/project_commit_create.json +22 -0
  40. data/spec/fixtures/project_star.json +44 -0
  41. data/spec/fixtures/project_unstar.json +44 -0
  42. data/spec/fixtures/{git_hook.json → push_rule.json} +0 -0
  43. data/spec/gitlab/cli_spec.rb +9 -0
  44. data/spec/gitlab/client/client_spec.rb +11 -0
  45. data/spec/gitlab/client/commits_spec.rb +31 -0
  46. data/spec/gitlab/client/issues_spec.rb +48 -0
  47. data/spec/gitlab/client/merge_requests_spec.rb +57 -10
  48. data/spec/gitlab/client/milestones_spec.rb +16 -0
  49. data/spec/gitlab/client/pipelines_spec.rb +95 -0
  50. data/spec/gitlab/client/projects_spec.rb +116 -38
  51. data/spec/gitlab/client/repositories_spec.rb +0 -15
  52. data/spec/gitlab/client/repository_files_spec.rb +17 -2
  53. data/spec/gitlab/client/users_spec.rb +31 -13
  54. data/spec/gitlab/file_response_spec.rb +6 -1
  55. metadata +53 -43
@@ -1,6 +1,6 @@
1
1
  class Gitlab::Client
2
2
  # Defines methods related to repository commits.
3
- # @see https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/commits.md
3
+ # @see https://docs.gitlab.com/ce/api/commits.html
4
4
  module Commits
5
5
  # Gets a list of project commits.
6
6
  #
@@ -8,14 +8,14 @@ class Gitlab::Client
8
8
  # Gitlab.commits('viking')
9
9
  # Gitlab.repo_commits('gitlab', { ref_name: 'api' })
10
10
  #
11
- # @param [Integer] project The ID of a project.
11
+ # @param [Integer, String] project The ID or name of a project.
12
12
  # @param [Hash] options A customizable set of options.
13
13
  # @option options [String] :ref_name The branch or tag name of a project repository.
14
14
  # @option options [Integer] :page The page number.
15
15
  # @option options [Integer] :per_page The number of results per page.
16
16
  # @return [Array<Gitlab::ObjectifiedHash>]
17
17
  def commits(project, options={})
18
- get("/projects/#{project}/repository/commits", query: options)
18
+ get("/projects/#{url_encode project}/repository/commits", query: options)
19
19
  end
20
20
  alias_method :repo_commits, :commits
21
21
 
@@ -25,11 +25,11 @@ class Gitlab::Client
25
25
  # Gitlab.commit(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
26
26
  # Gitlab.repo_commit(3, 'ed899a2f4b50b4370feeea94676502b42383c746')
27
27
  #
28
- # @param [Integer] project The ID of a project.
28
+ # @param [Integer, String] project The ID or name of a project.
29
29
  # @param [String] sha The commit hash or name of a repository branch or tag
30
30
  # @return [Gitlab::ObjectifiedHash]
31
31
  def commit(project, sha)
32
- get("/projects/#{project}/repository/commits/#{sha}")
32
+ get("/projects/#{url_encode project}/repository/commits/#{sha}")
33
33
  end
34
34
  alias_method :repo_commit, :commit
35
35
 
@@ -39,11 +39,11 @@ class Gitlab::Client
39
39
  # Gitlab.commit_diff(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
40
40
  # Gitlab.repo_commit_diff(3, 'ed899a2f4b50b4370feeea94676502b42383c746')
41
41
  #
42
- # @param [Integer] project The ID of a project.
42
+ # @param [Integer, String] project The ID or name of a project.
43
43
  # @param [String] sha The name of a repository branch or tag or if not given the default branch.
44
44
  # @return [Gitlab::ObjectifiedHash]
45
45
  def commit_diff(project, sha)
46
- get("/projects/#{project}/repository/commits/#{sha}/diff")
46
+ get("/projects/#{url_encode project}/repository/commits/#{sha}/diff")
47
47
  end
48
48
  alias_method :repo_commit_diff, :commit_diff
49
49
 
@@ -58,7 +58,7 @@ class Gitlab::Client
58
58
  # @option options [Integer] :per_page The number of results per page.
59
59
  # @return [Array<Gitlab::ObjectifiedHash>]
60
60
  def commit_comments(project, commit, options={})
61
- get("/projects/#{project}/repository/commits/#{commit}/comments", query: options)
61
+ get("/projects/#{url_encode project}/repository/commits/#{commit}/comments", query: options)
62
62
  end
63
63
  alias_method :repo_commit_comments, :commit_comments
64
64
 
@@ -67,7 +67,7 @@ class Gitlab::Client
67
67
  # @example
68
68
  # Gitlab.create_commit_comment(5, 'c9f9662a9b1116c838b523ed64c6abdb4aae4b8b', 'Nice work on this commit!')
69
69
  #
70
- # @param [Integer] project The ID of a project.
70
+ # @param [Integer, String] project The ID or name of a project.
71
71
  # @param [String] sha The commit hash or name of a repository branch or tag.
72
72
  # @param [String] note The text of a comment.
73
73
  # @param [Hash] options A customizable set of options.
@@ -76,7 +76,7 @@ class Gitlab::Client
76
76
  # @option options [String] :line_type The line type (new or old).
77
77
  # @return [Gitlab::ObjectifiedHash] Information about created comment.
78
78
  def create_commit_comment(project, commit, note, options={})
79
- post("/projects/#{project}/repository/commits/#{commit}/comments", body: options.merge(note: note))
79
+ post("/projects/#{url_encode project}/repository/commits/#{commit}/comments", body: options.merge(note: note))
80
80
  end
81
81
  alias_method :repo_create_commit_comment, :create_commit_comment
82
82
 
@@ -87,12 +87,12 @@ class Gitlab::Client
87
87
  # Gitlab.commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', { name: 'jenkins' })
88
88
  # Gitlab.commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', { name: 'jenkins', all: true })
89
89
  #
90
- # @param [Integer] project The ID of a project.
90
+ # @param [Integer, String] project The ID or name of a project.
91
91
  # @param [String] sha The commit hash
92
92
  # @param [Hash] options A customizable set of options.
93
93
  # @option options [String] :ref Filter by ref name, it can be branch or tag
94
94
  # @option options [String] :stage Filter by stage
95
- # @option options [String] :name Filer by status name, eg. jenkins
95
+ # @option options [String] :name Filter by status name, eg. jenkins
96
96
  # @option options [Boolean] :all The flag to return all statuses, not only latest ones
97
97
  def commit_status(id, sha, options={})
98
98
  get("/projects/#{id}/repository/commits/#{sha}/statuses", query: options)
@@ -106,16 +106,41 @@ class Gitlab::Client
106
106
  # Gitlab.update_commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'failed', { name: 'jenkins' })
107
107
  # Gitlab.update_commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'canceled', { name: 'jenkins', target_url: 'http://example.com/builds/1' })
108
108
  #
109
- # @param [Integer] project The ID of a project.
109
+ # @param [Integer, String] project The ID or name of a project.
110
110
  # @param [String] sha The commit hash
111
111
  # @param [String] state of the status. Can be: pending, running, success, failed, canceled
112
112
  # @param [Hash] options A customizable set of options.
113
113
  # @option options [String] :ref The ref (branch or tag) to which the status refers
114
- # @option options [String] :name Filer by status name, eg. jenkins
114
+ # @option options [String] :name Filter by status name, eg. jenkins
115
115
  # @option options [String] :target_url The target URL to associate with this status
116
116
  def update_commit_status(id, sha, state, options={})
117
117
  post("/projects/#{id}/statuses/#{sha}", query: options.merge(state: state))
118
118
  end
119
119
  alias_method :repo_update_commit_status, :update_commit_status
120
+
121
+ # Creates a single commit with one or more changes
122
+ #
123
+ # @see https://docs.gitlab.com/ce/api/commits.html#create-a-commit-with-multiple-files-and-actions
124
+ # Introduced in Gitlab 8.13
125
+ #
126
+ # @example
127
+ # Gitlab.create_commit(2726132, 'master', 'refactors everything', [{action: 'create', file_path: '/foo.txt', content: 'bar'}])
128
+ # Gitlab.create_commit(2726132, 'master', 'refactors everything', [{action: 'delete', file_path: '/foo.txt'}])
129
+ #
130
+ # @param [Integer, String] project The ID or name of a project.
131
+ # @param [String] branch the branch name you wish to commit to
132
+ # @param [String] message the commit message
133
+ # @param [Array[Hash]] An array of action hashes to commit as a batch. See the next table for what attributes it can take.
134
+ # @option options [String] :author_email the email address of the author
135
+ # @option options [String] :author_name the name of the author
136
+ # @return [Gitlab::ObjectifiedHash] hash of commit related data
137
+ def create_commit(project, branch, message, actions, options={})
138
+ payload = {
139
+ branch_name: branch,
140
+ commit_message: message,
141
+ actions: actions,
142
+ }.merge(options)
143
+ post("/projects/#{url_encode project}/repository/commits", query: payload)
144
+ end
120
145
  end
121
146
  end
@@ -1,6 +1,6 @@
1
1
  class Gitlab::Client
2
2
  # Defines methods related to groups.
3
- # @see https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/groups.md
3
+ # @see https://docs.gitlab.com/ce/api/groups.html
4
4
  module Groups
5
5
  # Gets a list of groups.
6
6
  #
@@ -1,6 +1,6 @@
1
1
  class Gitlab::Client
2
2
  # Defines methods related to issues.
3
- # @see https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/issues.md
3
+ # @see https://docs.gitlab.com/ce/api/issues.html
4
4
  module Issues
5
5
  # Gets a list of user's issues.
6
6
  # Will return a list of project's issues if project ID passed.
@@ -10,16 +10,16 @@ class Gitlab::Client
10
10
  # Gitlab.issues(5)
11
11
  # Gitlab.issues({ per_page: 40 })
12
12
  #
13
- # @param [Integer] project The ID of a project.
13
+ # @param [Integer, String] project The ID or name of a project.
14
14
  # @param [Hash] options A customizable set of options.
15
15
  # @option options [Integer] :page The page number.
16
16
  # @option options [Integer] :per_page The number of results per page.
17
17
  # @return [Array<Gitlab::ObjectifiedHash>]
18
18
  def issues(project=nil, options={})
19
- if project.to_i.zero?
19
+ if project.to_s.empty? && project.to_i.zero?
20
20
  get("/issues", query: options)
21
21
  else
22
- get("/projects/#{project}/issues", query: options)
22
+ get("/projects/#{url_encode project}/issues", query: options)
23
23
  end
24
24
  end
25
25
 
@@ -28,11 +28,11 @@ class Gitlab::Client
28
28
  # @example
29
29
  # Gitlab.issue(5, 42)
30
30
  #
31
- # @param [Integer] project The ID of a project.
31
+ # @param [Integer, String] project The ID or name of a project.
32
32
  # @param [Integer] id The ID of an issue.
33
33
  # @return [Gitlab::ObjectifiedHash]
34
34
  def issue(project, id)
35
- get("/projects/#{project}/issues/#{id}")
35
+ get("/projects/#{url_encode project}/issues/#{id}")
36
36
  end
37
37
 
38
38
  # Creates a new issue.
@@ -41,7 +41,7 @@ class Gitlab::Client
41
41
  # Gitlab.create_issue(5, 'New issue')
42
42
  # Gitlab.create_issue(5, 'New issue', { description: 'This is a new issue', assignee_id: 42 })
43
43
  #
44
- # @param [Integer] project The ID of a project.
44
+ # @param [Integer, String] project The ID or name of a project.
45
45
  # @param [String] title The title of an issue.
46
46
  # @param [Hash] options A customizable set of options.
47
47
  # @option options [String] :description The description of an issue.
@@ -51,7 +51,7 @@ class Gitlab::Client
51
51
  # @return [Gitlab::ObjectifiedHash] Information about created issue.
52
52
  def create_issue(project, title, options={})
53
53
  body = { title: title }.merge(options)
54
- post("/projects/#{project}/issues", body: body)
54
+ post("/projects/#{url_encode project}/issues", body: body)
55
55
  end
56
56
 
57
57
  # Updates an issue.
@@ -59,7 +59,7 @@ class Gitlab::Client
59
59
  # @example
60
60
  # Gitlab.edit_issue(6, 1, { title: 'Updated title' })
61
61
  #
62
- # @param [Integer] project The ID of a project.
62
+ # @param [Integer, String] project The ID or name of a project.
63
63
  # @param [Integer] id The ID of an issue.
64
64
  # @param [Hash] options A customizable set of options.
65
65
  # @option options [String] :title The title of an issue.
@@ -70,7 +70,7 @@ class Gitlab::Client
70
70
  # @option options [String] :state_event The state event of an issue ('close' or 'reopen').
71
71
  # @return [Gitlab::ObjectifiedHash] Information about updated issue.
72
72
  def edit_issue(project, id, options={})
73
- put("/projects/#{project}/issues/#{id}", body: options)
73
+ put("/projects/#{url_encode project}/issues/#{id}", body: options)
74
74
  end
75
75
 
76
76
  # Closes an issue.
@@ -78,11 +78,11 @@ class Gitlab::Client
78
78
  # @example
79
79
  # Gitlab.close_issue(3, 42)
80
80
  #
81
- # @param [Integer] project The ID of a project.
81
+ # @param [Integer, String] project The ID or name of a project.
82
82
  # @param [Integer] id The ID of an issue.
83
83
  # @return [Gitlab::ObjectifiedHash] Information about closed issue.
84
84
  def close_issue(project, id)
85
- put("/projects/#{project}/issues/#{id}", body: { state_event: 'close' })
85
+ put("/projects/#{url_encode project}/issues/#{id}", body: { state_event: 'close' })
86
86
  end
87
87
 
88
88
  # Reopens an issue.
@@ -90,11 +90,35 @@ class Gitlab::Client
90
90
  # @example
91
91
  # Gitlab.reopen_issue(3, 42)
92
92
  #
93
- # @param [Integer] project The ID of a project.
93
+ # @param [Integer, String] project The ID or name of a project.
94
94
  # @param [Integer] id The ID of an issue.
95
95
  # @return [Gitlab::ObjectifiedHash] Information about reopened issue.
96
96
  def reopen_issue(project, id)
97
- put("/projects/#{project}/issues/#{id}", body: { state_event: 'reopen' })
97
+ put("/projects/#{url_encode project}/issues/#{id}", body: { state_event: 'reopen' })
98
+ end
99
+
100
+ # Subscribe to an issue.
101
+ #
102
+ # @example
103
+ # Gitlab.subscribe_to_issue(3, 42)
104
+ #
105
+ # @param [Integer, String] project The ID or name of a project.
106
+ # @param [Integer] id The ID of an issue.
107
+ # @return [Gitlab::ObjectifiedHash] Information about subscribed issue.
108
+ def subscribe_to_issue(project, id)
109
+ post("/projects/#{url_encode project}/issues/#{id}/subscribe")
110
+ end
111
+
112
+ # Unsubscribe from an issue.
113
+ #
114
+ # @example
115
+ # Gitlab.unsubscribe_from_issue(3, 42)
116
+ #
117
+ # @param [Integer, String] project The ID or name of a project.
118
+ # @param [Integer] id The ID of an issue.
119
+ # @return [Gitlab::ObjectifiedHash] Information about unsubscribed issue.
120
+ def unsubscribe_from_issue(project, id)
121
+ post("/projects/#{url_encode project}/issues/#{id}/unsubscribe")
98
122
  end
99
123
 
100
124
  # Deletes an issue.
@@ -103,11 +127,11 @@ class Gitlab::Client
103
127
  # @example
104
128
  # Gitlab.delete_issue(3, 42)
105
129
  #
106
- # @param [Integer] project The ID of a project.
130
+ # @param [Integer, String] project The ID or name of a project.
107
131
  # @param [Integer] id The ID of an issue.
108
132
  # @return [Gitlab::ObjectifiedHash] Information about deleted issue.
109
133
  def delete_issue(project, id)
110
- delete("/projects/#{project}/issues/#{id}")
134
+ delete("/projects/#{url_encode project}/issues/#{id}")
111
135
  end
112
136
  end
113
137
  end
@@ -1,16 +1,16 @@
1
1
  class Gitlab::Client
2
2
  # Defines methods related to labels.
3
- # @see https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/labels.md
3
+ # @see https://docs.gitlab.com/ce/api/labels.html
4
4
  module Labels
5
5
  # Gets a list of project's labels.
6
6
  #
7
7
  # @example
8
8
  # Gitlab.labels(5)
9
9
  #
10
- # @param [Integer] project The ID of a project.
10
+ # @param [Integer, String] project The ID or name of a project.
11
11
  # @return [Array<Gitlab::ObjectifiedHash>]
12
12
  def labels(project)
13
- get("/projects/#{project}/labels")
13
+ get("/projects/#{url_encode project}/labels")
14
14
  end
15
15
 
16
16
  # Creates a new label.
@@ -18,12 +18,12 @@ class Gitlab::Client
18
18
  # @example
19
19
  # Gitlab.create_label(42, "Backlog", '#DD10AA')
20
20
  #
21
- # @param [Integer] project The ID of a project.
21
+ # @param [Integer, String] project The ID or name of a project.
22
22
  # @option [String] name The name of a label.
23
23
  # @option [String] color The color of a label.
24
24
  # @return [Gitlab::ObjectifiedHash] Information about created label.
25
25
  def create_label(project, name, color)
26
- post("/projects/#{project}/labels", body: { name: name, color: color })
26
+ post("/projects/#{url_encode project}/labels", body: { name: name, color: color })
27
27
  end
28
28
 
29
29
  # Updates a label.
@@ -32,14 +32,14 @@ class Gitlab::Client
32
32
  # Gitlab.edit_label(42, "Backlog", { new_name: 'TODO' })
33
33
  # Gitlab.edit_label(42, "Backlog", { new_name: 'TODO', color: '#DD10AA' })
34
34
  #
35
- # @param [Integer] project The ID of a project.
35
+ # @param [Integer, String] project The ID or name of a project.
36
36
  # @param [String] name The name of a label.
37
37
  # @param [Hash] options A customizable set of options.
38
38
  # @option options [String] :new_name The new name of a label.
39
39
  # @option options [String] :color The color of a label.
40
40
  # @return [Gitlab::ObjectifiedHash] Information about updated label.
41
41
  def edit_label(project, name, options={})
42
- put("/projects/#{project}/labels", body: options.merge(name: name))
42
+ put("/projects/#{url_encode project}/labels", body: options.merge(name: name))
43
43
  end
44
44
 
45
45
  # Deletes a label.
@@ -47,11 +47,11 @@ class Gitlab::Client
47
47
  # @example
48
48
  # Gitlab.delete_label(2, 'Backlog')
49
49
  #
50
- # @param [Integer] project The ID of a project.
50
+ # @param [Integer, String] project The ID or name of a project.
51
51
  # @param [String] name The name of a label.
52
52
  # @return [Gitlab::ObjectifiedHash] Information about deleted label.
53
53
  def delete_label(project, name)
54
- delete("/projects/#{project}/labels", body: { name: name })
54
+ delete("/projects/#{url_encode project}/labels", body: { name: name })
55
55
  end
56
56
  end
57
57
  end
@@ -1,6 +1,6 @@
1
1
  class Gitlab::Client
2
2
  # Defines methods related to merge requests.
3
- # @see https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/merge_requests.md
3
+ # @see https://docs.gitlab.com/ce/api/merge_requests.html
4
4
  module MergeRequests
5
5
  # Gets a list of project merge requests.
6
6
  #
@@ -8,13 +8,13 @@ class Gitlab::Client
8
8
  # Gitlab.merge_requests(5)
9
9
  # Gitlab.merge_requests({ per_page: 40 })
10
10
  #
11
- # @param [Integer] project The ID of a project.
11
+ # @param [Integer, String] project The ID or name of a project.
12
12
  # @param [Hash] options A customizable set of options.
13
13
  # @option options [Integer] :page The page number.
14
14
  # @option options [Integer] :per_page The number of results per page.
15
15
  # @return [Array<Gitlab::ObjectifiedHash>]
16
16
  def merge_requests(project, options={})
17
- get("/projects/#{project}/merge_requests", query: options)
17
+ get("/projects/#{url_encode project}/merge_requests", query: options)
18
18
  end
19
19
 
20
20
  # Gets a single merge request.
@@ -22,11 +22,11 @@ class Gitlab::Client
22
22
  # @example
23
23
  # Gitlab.merge_request(5, 36)
24
24
  #
25
- # @param [Integer] project The ID of a project.
25
+ # @param [Integer, String] project The ID or name of a project.
26
26
  # @param [Integer] id The ID of a merge request.
27
27
  # @return <Gitlab::ObjectifiedHash]
28
28
  def merge_request(project, id)
29
- get("/projects/#{project}/merge_request/#{id}")
29
+ get("/projects/#{url_encode project}/merge_requests/#{id}")
30
30
  end
31
31
 
32
32
  # Creates a merge request.
@@ -37,7 +37,7 @@ class Gitlab::Client
37
37
  # Gitlab.create_merge_request(5, 'New merge request',
38
38
  # { source_branch: 'source_branch', target_branch: 'target_branch', assignee_id: 42 })
39
39
  #
40
- # @param [Integer] project The ID of a project.
40
+ # @param [Integer, String] project The ID or name of a project.
41
41
  # @param [String] title The title of a merge request.
42
42
  # @param [Hash] options A customizable set of options.
43
43
  # @option options [String] :source_branch (required) The source branch name.
@@ -47,7 +47,7 @@ class Gitlab::Client
47
47
  # @return [Gitlab::ObjectifiedHash] Information about created merge request.
48
48
  def create_merge_request(project, title, options={})
49
49
  body = { title: title }.merge(options)
50
- post("/projects/#{project}/merge_requests", body: body)
50
+ post("/projects/#{url_encode project}/merge_requests", body: body)
51
51
  end
52
52
 
53
53
  # Updates a merge request.
@@ -55,7 +55,7 @@ class Gitlab::Client
55
55
  # @example
56
56
  # Gitlab.update_merge_request(5, 42, { title: 'New title' })
57
57
  #
58
- # @param [Integer] project The ID of a project.
58
+ # @param [Integer, String] project The ID or name of a project.
59
59
  # @param [Integer] id The ID of a merge request.
60
60
  # @param [Hash] options A customizable set of options.
61
61
  # @option options [String] :title The title of a merge request.
@@ -65,7 +65,7 @@ class Gitlab::Client
65
65
  # @option options [String] :state_event New state (close|reopen|merge).
66
66
  # @return [Gitlab::ObjectifiedHash] Information about updated merge request.
67
67
  def update_merge_request(project, id, options={})
68
- put("/projects/#{project}/merge_request/#{id}", body: options)
68
+ put("/projects/#{url_encode project}/merge_requests/#{id}", body: options)
69
69
  end
70
70
 
71
71
  # Accepts a merge request.
@@ -73,13 +73,13 @@ class Gitlab::Client
73
73
  # @example
74
74
  # Gitlab.accept_merge_request(5, 42, { merge_commit_message: 'Nice!' })
75
75
  #
76
- # @param [Integer] project The ID of a project.
76
+ # @param [Integer, String] project The ID or name of a project.
77
77
  # @param [Integer] id The ID of a merge request.
78
78
  # @param [Hash] options A customizable set of options.
79
79
  # @option options [String] :merge_commit_message Custom merge commit message
80
80
  # @return [Gitlab::ObjectifiedHash] Information about updated merge request.
81
81
  def accept_merge_request(project, id, options={})
82
- put("/projects/#{project}/merge_request/#{id}/merge", body: options)
82
+ put("/projects/#{url_encode project}/merge_requests/#{id}/merge", body: options)
83
83
  end
84
84
 
85
85
  # Adds a comment to a merge request.
@@ -88,12 +88,12 @@ class Gitlab::Client
88
88
  # Gitlab.create_merge_request_comment(5, 1, "Awesome merge!")
89
89
  # Gitlab.create_merge_request_comment('gitlab', 1, "Awesome merge!")
90
90
  #
91
- # @param [Integer] project The ID of a project.
91
+ # @param [Integer, String] project The ID or name of a project.
92
92
  # @param [Integer] id The ID of a merge request.
93
93
  # @param [String] note The content of a comment.
94
94
  # @return [Gitlab::ObjectifiedHash] Information about created merge request comment.
95
95
  def create_merge_request_comment(project, id, note)
96
- post("/projects/#{project}/merge_requests/#{id}/notes", body: { body: note })
96
+ post("/projects/#{url_encode project}/merge_requests/#{id}/notes", body: { body: note })
97
97
  end
98
98
 
99
99
  # Adds a comment to a merge request.
@@ -102,13 +102,13 @@ class Gitlab::Client
102
102
  # Gitlab.edit_merge_request_comment(5, 1,2, "Awesome merge!")
103
103
  # Gitlab.edit_merge_request_comment('gitlab', 1, 2, "Awesome merge!")
104
104
  #
105
- # @param [Integer] project The ID of a project.
105
+ # @param [Integer, String] project The ID or name of a project.
106
106
  # @param [Integer] id The ID of a merge request.
107
107
  # @param [Integer] id The ID of the merge-request comment
108
108
  # @param [String] note The content of a comment.
109
109
  # @return [Gitlab::ObjectifiedHash] Information about created merge request comment.
110
110
  def edit_merge_request_comment(project, id, note_id , note)
111
- put("/projects/#{project}/merge_requests/#{id}/notes/#{note_id}", body: { body: note })
111
+ put("/projects/#{url_encode project}/merge_requests/#{id}/notes/#{note_id}", body: { body: note })
112
112
  end
113
113
 
114
114
  # Deletes a comment from a merge request.
@@ -117,28 +117,28 @@ class Gitlab::Client
117
117
  # Gitlab.delete_merge_request_comment(5, 1,2)
118
118
  # Gitlab.delete_merge_request_comment('gitlab', 1, 2)
119
119
  #
120
- # @param [Integer] project The ID of a project.
120
+ # @param [Integer, String] project The ID or name of a project.
121
121
  # @param [Integer] id The ID of a merge request.
122
122
  # @param [Integer] id The ID of the merge-request comment
123
123
  # @return [Gitlab::ObjectifiedHash] Information about created merge request comment.
124
124
  def delete_merge_request_comment(project, id, note_id)
125
- delete("/projects/#{project}/merge_requests/#{id}/notes/#{note_id}")
125
+ delete("/projects/#{url_encode project}/merge_requests/#{id}/notes/#{note_id}")
126
126
  end
127
-
127
+
128
128
  # Gets the comments on a merge request.
129
129
  #
130
130
  # @example
131
131
  # Gitlab.merge_request_comments(5, 1)
132
132
  # Gitlab.merge_request_comments(5, 1, { per_page: 10, page: 2 })
133
133
  #
134
- # @param [Integer] project The ID of a project.
134
+ # @param [Integer, String] project The ID or name of a project.
135
135
  # @param [Integer] id The ID of a merge request.
136
136
  # @param [Hash] options A customizable set of options.
137
137
  # @option options [Integer] :page The page number.
138
138
  # @option options [Integer] :per_page The number of results per page.
139
139
  # @return [Gitlab::ObjectifiedHash] The merge request's comments.
140
140
  def merge_request_comments(project, id, options={})
141
- get("/projects/#{project}/merge_requests/#{id}/notes", query: options)
141
+ get("/projects/#{url_encode project}/merge_requests/#{id}/notes", query: options)
142
142
  end
143
143
 
144
144
  # Gets the changes of a merge request.
@@ -146,11 +146,11 @@ class Gitlab::Client
146
146
  # @example
147
147
  # Gitlab.merge_request_changes(5, 1)
148
148
  #
149
- # @param [Integer] project The ID of a project.
149
+ # @param [Integer, String] project The ID or name of a project.
150
150
  # @param [Integer] id The ID of a merge request.
151
151
  # @return [Gitlab::ObjectifiedHash] The merge request's changes.
152
152
  def merge_request_changes(project, id)
153
- get("/projects/#{project}/merge_request/#{id}/changes")
153
+ get("/projects/#{url_encode project}/merge_requests/#{id}/changes")
154
154
  end
155
155
 
156
156
  # Gets the commits of a merge request.
@@ -158,11 +158,48 @@ class Gitlab::Client
158
158
  # @example
159
159
  # Gitlab.merge_request_commits(5, 1)
160
160
  #
161
- # @param [Integer] project The ID of a project.
161
+ # @param [Integer, String] project The ID or name of a project.
162
162
  # @param [Integer] id The ID of a merge request.
163
163
  # @return [Array<Gitlab::ObjectifiedHash>] The merge request's commits.
164
164
  def merge_request_commits(project, id)
165
- get("/projects/#{project}/merge_request/#{id}/commits")
165
+ get("/projects/#{url_encode project}/merge_requests/#{id}/commits")
166
+ end
167
+
168
+ # List issues that will close on merge
169
+ #
170
+ # @example
171
+ # Gitlab.merge_request_closes_issues(5, 1)
172
+ #
173
+ # @param [Integer] project The ID of a project
174
+ # @param [Integer] iid The internal ID of a merge request
175
+ def merge_request_closes_issues(project_id, merge_request_iid)
176
+ get("/projects/#{project_id}/merge_requests/#{merge_request_iid}/closes_issues")
177
+ end
178
+
179
+ # Subscribes to a merge request.
180
+ #
181
+ # @example
182
+ # Gitlab.subscribe_to_merge_request(5, 1)
183
+ # Gitlab.subscribe_to_merge_request('gitlab', 1)
184
+ #
185
+ # @param [Integer, String] project The ID or name of a project.
186
+ # @param [Integer] id The ID of a merge request.
187
+ # @return [Gitlab::ObjectifiedHash] Information about subscribed merge request.
188
+ def subscribe_to_merge_request(project, id)
189
+ post("/projects/#{url_encode project}/merge_requests/#{id}/subscribe")
190
+ end
191
+
192
+ # Unsubscribes from a merge request.
193
+ #
194
+ # @example
195
+ # Gitlab.unsubscribe_from_merge_request(5, 1)
196
+ # Gitlab.unsubscribe_from_merge_request('gitlab', 1)
197
+ #
198
+ # @param [Integer, String] project The ID or name of a project.
199
+ # @param [Integer] id The ID of a merge request.
200
+ # @return [Gitlab::ObjectifiedHash] Information about unsubscribed merge request.
201
+ def unsubscribe_from_merge_request(project, id)
202
+ post("/projects/#{url_encode project}/merge_requests/#{id}/unsubscribe")
166
203
  end
167
204
  end
168
205
  end