octokit 4.6.0 → 4.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.md +14 -13
  3. data/LICENSE.md +1 -1
  4. data/README.md +141 -60
  5. data/lib/ext/sawyer/relation.rb +10 -0
  6. data/lib/octokit/authentication.rb +10 -11
  7. data/lib/octokit/client/actions_secrets.rb +58 -0
  8. data/lib/octokit/client/actions_workflow_runs.rb +105 -0
  9. data/lib/octokit/client/actions_workflows.rb +43 -0
  10. data/lib/octokit/client/apps.rb +222 -0
  11. data/lib/octokit/client/authorizations.rb +12 -74
  12. data/lib/octokit/client/checks.rb +191 -0
  13. data/lib/octokit/client/commit_branches.rb +20 -0
  14. data/lib/octokit/client/commit_pulls.rb +20 -0
  15. data/lib/octokit/client/community_profile.rb +22 -0
  16. data/lib/octokit/client/contents.rb +6 -0
  17. data/lib/octokit/client/deployments.rb +20 -0
  18. data/lib/octokit/client/events.rb +1 -0
  19. data/lib/octokit/client/gists.rb +3 -2
  20. data/lib/octokit/client/issues.rb +48 -1
  21. data/lib/octokit/client/labels.rb +7 -7
  22. data/lib/octokit/client/licenses.rb +1 -1
  23. data/lib/octokit/client/marketplace.rb +56 -0
  24. data/lib/octokit/client/notifications.rb +0 -4
  25. data/lib/octokit/client/oauth_applications.rb +122 -0
  26. data/lib/octokit/client/organizations.rb +149 -16
  27. data/lib/octokit/client/projects.rb +7 -7
  28. data/lib/octokit/client/pull_requests.rb +7 -5
  29. data/lib/octokit/client/rate_limit.rb +2 -2
  30. data/lib/octokit/client/refs.rb +19 -3
  31. data/lib/octokit/client/releases.rb +1 -0
  32. data/lib/octokit/client/repositories.rb +169 -8
  33. data/lib/octokit/client/repository_invitations.rb +1 -8
  34. data/lib/octokit/client/reviews.rb +227 -0
  35. data/lib/octokit/client/search.rb +24 -9
  36. data/lib/octokit/client/source_import.rb +1 -1
  37. data/lib/octokit/client/stats.rb +2 -0
  38. data/lib/octokit/client/statuses.rb +2 -2
  39. data/lib/octokit/client/users.rb +88 -1
  40. data/lib/octokit/client.rb +41 -9
  41. data/lib/octokit/configurable.rb +10 -2
  42. data/lib/octokit/connection.rb +19 -4
  43. data/lib/octokit/default.rb +17 -1
  44. data/lib/octokit/enterprise_admin_client/admin_stats.rb +1 -1
  45. data/lib/octokit/enterprise_admin_client/license.rb +1 -1
  46. data/lib/octokit/enterprise_admin_client/orgs.rb +2 -2
  47. data/lib/octokit/enterprise_admin_client/search_indexing.rb +1 -1
  48. data/lib/octokit/enterprise_admin_client/users.rb +12 -12
  49. data/lib/octokit/enterprise_management_console_client/management_console.rb +1 -1
  50. data/lib/octokit/enterprise_management_console_client.rb +1 -1
  51. data/lib/octokit/error.rb +74 -4
  52. data/lib/octokit/gist.rb +1 -1
  53. data/lib/octokit/middleware/follow_redirects.rb +2 -2
  54. data/lib/octokit/preview.rb +14 -3
  55. data/lib/octokit/rate_limit.rb +4 -4
  56. data/lib/octokit/repository.rb +10 -8
  57. data/lib/octokit/response/feed_parser.rb +0 -2
  58. data/lib/octokit/response/raise_error.rb +0 -2
  59. data/lib/octokit/version.rb +1 -1
  60. data/octokit.gemspec +2 -1
  61. metadata +39 -9
@@ -0,0 +1,191 @@
1
+ module Octokit
2
+ class Client
3
+
4
+ # Methods for the Checks API
5
+ #
6
+ # @see https://developer.github.com/v3/checks/
7
+ module Checks
8
+
9
+ # Methods for Check Runs
10
+ #
11
+ # @see https://developer.github.com/v3/checks/runs/
12
+
13
+ # Create a check run
14
+ #
15
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
16
+ # @param name [String] The name of the check
17
+ # @param head_sha [String] The SHA of the commit to check
18
+ # @return [Sawyer::Resource] A hash representing the new check run
19
+ # @see https://developer.github.com/v3/checks/runs/#create-a-check-run
20
+ # @example Create a check run
21
+ # check_run = @client.create_check_run("octocat/Hello-World", "my-check", "7638417db6d59f3c431d3e1f261cc637155684cd")
22
+ # check_run.name # => "my-check"
23
+ # check_run.head_sha # => "7638417db6d59f3c431d3e1f261cc637155684cd"
24
+ # check_run.status # => "queued"
25
+ def create_check_run(repo, name, head_sha, options = {})
26
+ options[:name] = name
27
+ options[:head_sha] = head_sha
28
+
29
+ post "#{Repository.path repo}/check-runs", options
30
+ end
31
+
32
+ # Update a check run
33
+ #
34
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
35
+ # @param id [Integer] The ID of the check run
36
+ # @return [Sawyer::Resource] A hash representing the updated check run
37
+ # @see https://developer.github.com/v3/checks/runs/#update-a-check-run
38
+ # @example Update a check run
39
+ # check_run = @client.update_check_run("octocat/Hello-World", 51295429, status: "in_progress")
40
+ # check_run.id # => 51295429
41
+ # check_run.status # => "in_progress"
42
+ def update_check_run(repo, id, options = {})
43
+ patch "#{Repository.path repo}/check-runs/#{id}", options
44
+ end
45
+
46
+ # List check runs for a specific ref
47
+ #
48
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
49
+ # @param ref [String] A SHA, branch name, or tag name
50
+ # @param options [Hash] A set of optional filters
51
+ # @option options [String] :check_name Returns check runs with the specified <tt>name</tt>
52
+ # @option options [String] :status Returns check runs with the specified <tt>status</tt>
53
+ # @option options [String] :filter Filters check runs by their <tt>completed_at</tt> timestamp
54
+ # @return [Sawyer::Resource] A hash representing a collection of check runs
55
+ # @see https://developer.github.com/v3/checks/runs/#list-check-runs-for-a-specific-ref
56
+ # @example List check runs for a specific ref
57
+ # result = @client.check_runs_for_ref("octocat/Hello-World", "7638417db6d59f3c431d3e1f261cc637155684cd", status: "in_progress")
58
+ # result.total_count # => 1
59
+ # result.check_runs.count # => 1
60
+ # result.check_runs[0].id # => 51295429
61
+ # result.check_runs[0].status # => "in_progress"
62
+ def check_runs_for_ref(repo, ref, options = {})
63
+ get "#{Repository.path repo}/commits/#{ref}/check-runs", options
64
+ end
65
+ alias :list_check_runs_for_ref :check_runs_for_ref
66
+
67
+ # List check runs in a check suite
68
+ #
69
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
70
+ # @param id [Integer] The ID of the check suite
71
+ # @param options [Hash] A set of optional filters
72
+ # @option options [String] :check_name Returns check runs with the specified <tt>name</tt>
73
+ # @option options [String] :status Returns check runs with the specified <tt>status</tt>
74
+ # @option options [String] :filter Filters check runs by their <tt>completed_at</tt> timestamp
75
+ # @return [Sawyer::Resource] A hash representing a collection of check runs
76
+ # @see https://developer.github.com/v3/checks/runs/#list-check-runs-in-a-check-suite
77
+ # @example List check runs in a check suite
78
+ # result = @client.check_runs_for_check_suite("octocat/Hello-World", 50440400, status: "in_progress")
79
+ # result.total_count # => 1
80
+ # result.check_runs.count # => 1
81
+ # result.check_runs[0].check_suite.id # => 50440400
82
+ # result.check_runs[0].status # => "in_progress"
83
+ def check_runs_for_check_suite(repo, id, options = {})
84
+ get "#{Repository.path repo}/check-suites/#{id}/check-runs", options
85
+ end
86
+ alias :list_check_runs_for_check_suite :check_runs_for_check_suite
87
+
88
+ # Get a single check run
89
+ #
90
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
91
+ # @param id [Integer] The ID of the check run
92
+ # @return [Sawyer::Resource] A hash representing the check run
93
+ # @see https://developer.github.com/v3/checks/runs/#get-a-single-check-run
94
+ def check_run(repo, id, options = {})
95
+ get "#{Repository.path repo}/check-runs/#{id}", options
96
+ end
97
+
98
+ # List annotations for a check run
99
+ #
100
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
101
+ # @param id [Integer] The ID of the check run
102
+ # @return [Array<Sawyer::Resource>] An array of hashes representing check run annotations
103
+ # @see https://developer.github.com/v3/checks/runs/#list-annotations-for-a-check-run
104
+ # @example List annotations for a check run
105
+ # annotations = @client.check_run_annotations("octocat/Hello-World", 51295429)
106
+ # annotations.count # => 1
107
+ # annotations[0].path # => "README.md"
108
+ # annotations[0].message # => "Looks good!"
109
+ def check_run_annotations(repo, id, options = {})
110
+ get "#{Repository.path repo}/check-runs/#{id}/annotations", options
111
+ end
112
+
113
+ # Methods for Check Suites
114
+ #
115
+ # @see https://developer.github.com/v3/checks/suites/
116
+
117
+ # Get a single check suite
118
+ #
119
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
120
+ # @param id [Integer] The ID of the check suite
121
+ # @return [Sawyer::Resource] A hash representing the check suite
122
+ # @see https://developer.github.com/v3/checks/suites/#get-a-single-check-suite
123
+ def check_suite(repo, id, options = {})
124
+ get "#{Repository.path repo}/check-suites/#{id}", options
125
+ end
126
+
127
+ # List check suites for a specific ref
128
+ #
129
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
130
+ # @param ref [String] A SHA, branch name, or tag name
131
+ # @param options [Hash] A set of optional filters
132
+ # @option options [Integer] :app_id Filters check suites by GitHub App <tt>id</tt>
133
+ # @option options [String] :check_name Filters checks suites by the <tt>name</tt> of the check run
134
+ # @return [Sawyer::Resource] A hash representing a collection of check suites
135
+ # @see https://developer.github.com/v3/checks/suites/#list-check-suites-for-a-specific-ref
136
+ # @example List check suites for a specific ref
137
+ # result = @client.check_suites_for_ref("octocat/Hello-World", "7638417db6d59f3c431d3e1f261cc637155684cd", app_id: 76765)
138
+ # result.total_count # => 1
139
+ # result.check_suites.count # => 1
140
+ # result.check_suites[0].id # => 50440400
141
+ # result.check_suites[0].app.id # => 76765
142
+ def check_suites_for_ref(repo, ref, options = {})
143
+ get "#{Repository.path repo}/commits/#{ref}/check-suites", options
144
+ end
145
+ alias :list_check_suites_for_ref :check_suites_for_ref
146
+
147
+ # Set preferences for check suites on a repository
148
+ #
149
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
150
+ # @param options [Hash] Preferences to set
151
+ # @return [Sawyer::Resource] A hash representing the repository's check suite preferences
152
+ # @see https://developer.github.com/v3/checks/suites/#set-preferences-for-check-suites-on-a-repository
153
+ # @example Set preferences for check suites on a repository
154
+ # result = @client.set_check_suite_preferences("octocat/Hello-World", auto_trigger_checks: [{ app_id: 76765, setting: false }])
155
+ # result.preferences.auto_trigger_checks.count # => 1
156
+ # result.preferences.auto_trigger_checks[0].app_id # => 76765
157
+ # result.preferences.auto_trigger_checks[0].setting # => false
158
+ # result.repository.full_name # => "octocat/Hello-World"
159
+ def set_check_suite_preferences(repo, options = {})
160
+ patch "#{Repository.path repo}/check-suites/preferences", options
161
+ end
162
+
163
+ # Create a check suite
164
+ #
165
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
166
+ # @param head_sha [String] The SHA of the commit to check
167
+ # @return [Sawyer::Resource] A hash representing the new check suite
168
+ # @see https://developer.github.com/v3/checks/suites/#create-a-check-suite
169
+ # @example Create a check suite
170
+ # check_suite = @client.create_check_suite("octocat/Hello-World", "7638417db6d59f3c431d3e1f261cc637155684cd")
171
+ # check_suite.head_sha # => "7638417db6d59f3c431d3e1f261cc637155684cd"
172
+ # check_suite.status # => "queued"
173
+ def create_check_suite(repo, head_sha, options = {})
174
+ options[:head_sha] = head_sha
175
+
176
+ post "#{Repository.path repo}/check-suites", options
177
+ end
178
+
179
+ # Rerequest check suite
180
+ #
181
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
182
+ # @param id [Integer] The ID of the check suite
183
+ # @return [Boolean] True if successful, raises an error otherwise
184
+ # @see https://developer.github.com/v3/checks/suites/#rerequest-check-suite
185
+ def rerequest_check_suite(repo, id, options = {})
186
+ post "#{Repository.path repo}/check-suites/#{id}/rerequest", options
187
+ true
188
+ end
189
+ end
190
+ end
191
+ end
@@ -0,0 +1,20 @@
1
+ module Octokit
2
+ class Client
3
+
4
+ # Methods for the Branches for HEAD API
5
+ #
6
+ # @see https://developer.github.com/v3/repos/commits/
7
+ module CommitBranches
8
+
9
+ # List branches for a single HEAD commit
10
+ #
11
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
12
+ # @param sha [String] The SHA of the commit whose branches will be fetched
13
+ # @return [Array] List of branches
14
+ # @see https://developer.github.com/v3/repos/commits/#list-branches-for-head-commit
15
+ def commit_branches(repo, sha, options = {})
16
+ paginate "#{Repository.path repo}/commits/#{sha}/branches-where-head", options
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ module Octokit
2
+ class Client
3
+
4
+ # Methods for the Commit Pulls API
5
+ #
6
+ # @see https://developer.github.com/v3/repos/comments/
7
+ module CommitPulls
8
+
9
+ # List pulls for a single commit
10
+ #
11
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
12
+ # @param sha [String] The SHA of the commit whose pulls will be fetched
13
+ # @return [Array] List of commit pulls
14
+ # @see https://developer.github.com/v3/repos/commits/#list-pull-requests-associated-with-commit
15
+ def commit_pulls(repo, sha, options = {})
16
+ paginate "#{Repository.path repo}/commits/#{sha}/pulls", options
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,22 @@
1
+ module Octokit
2
+ class Client
3
+
4
+ # Methods for the Community Profile API
5
+ #
6
+ # @see https://developer.github.com/v3/repos/community/
7
+ module CommunityProfile
8
+
9
+ # Get community profile metrics for a repository
10
+ #
11
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
12
+ # @return [Sawyer::Resource] Community profile metrics
13
+ # @see https://developer.github.com/v3/repos/community/#retrieve-community-profile-metrics
14
+ # @example Get community profile metrics for octokit/octokit.rb
15
+ # @client.community_profile('octokit/octokit.rb')
16
+ def community_profile(repo, options = {})
17
+ options = ensure_api_media_type(:community_profile, options)
18
+ get "#{Repository.path repo}/community/profile", options
19
+ end
20
+ end
21
+ end
22
+ end
@@ -16,6 +16,8 @@ module Octokit
16
16
  # @see https://developer.github.com/v3/repos/contents/#get-the-readme
17
17
  # @example Get the readme file for a repo
18
18
  # Octokit.readme("octokit/octokit.rb")
19
+ # @example Get the readme file for a particular branch of the repo
20
+ # Octokit.readme("octokit/octokit.rb", :query => {:ref => 'some-other-branch'})
19
21
  def readme(repo, options={})
20
22
  get "#{Repository.path repo}/readme", options
21
23
  end
@@ -29,7 +31,10 @@ module Octokit
29
31
  # @see https://developer.github.com/v3/repos/contents/#get-contents
30
32
  # @example List the contents of lib/octokit.rb
31
33
  # Octokit.contents("octokit/octokit.rb", :path => 'lib/octokit.rb')
34
+ # @example Lists the contents of lib /octokit.rb on a particular branch
35
+ # Octokit.contents("octokit/octokit.rb", :path => 'lib/octokit.rb', :query => {:ref => 'some-other-branch'})
32
36
  def contents(repo, options={})
37
+ options = options.dup
33
38
  repo_path = options.delete :path
34
39
  url = "#{Repository.path repo}/contents/#{repo_path}"
35
40
  get url, options
@@ -54,6 +59,7 @@ module Octokit
54
59
  # "File content",
55
60
  # :branch => "my-new-feature")
56
61
  def create_contents(*args)
62
+ args = args.map { |item| item && item.dup }
57
63
  options = args.last.is_a?(Hash) ? args.pop : {}
58
64
  repo = args.shift
59
65
  path = args.shift
@@ -6,6 +6,16 @@ module Octokit
6
6
  # @see https://developer.github.com/v3/repos/commits/deployments/
7
7
  module Deployments
8
8
 
9
+ # Fetch a single deployment for a repository
10
+ #
11
+ # @param repo [Integer, String, Repository, Hash] A GitHub repository
12
+ # @param deployment_id [Integer, String, Repository, Hash] A GitHub repository
13
+ # @return <Sawyer::Resource> A single deployment
14
+ # @see https://developer.github.com/v3/repos/deployments/#get-a-single-deployment
15
+ def deployment(repo, deployment_id, options = {})
16
+ get("#{Repository.path repo}/deployments/#{deployment_id}", options)
17
+ end
18
+
9
19
  # List all deployments for a repository
10
20
  #
11
21
  # @param repo [Integer, String, Repository, Hash] A GitHub repository
@@ -33,6 +43,16 @@ module Octokit
33
43
  post("#{Repository.path repo}/deployments", options)
34
44
  end
35
45
 
46
+ # Delete a Deployment
47
+ #
48
+ # @param repo [Integer, String, Repository, Hash] A GitHub repository
49
+ # @param deployment_id [Integer, String, Repository, Hash] A GitHub repository
50
+ # @return [No Content]
51
+ # @see https://developer.github.com/v3/repos/deployments/#delete-a-deployment
52
+ def delete_deployment(repo, deployment_id, options = {})
53
+ delete("#{Repository.path repo}/deployments/#{deployment_id}", options)
54
+ end
55
+
36
56
  # List all statuses for a Deployment
37
57
  #
38
58
  # @param deployment_url [String] A URL for a deployment resource
@@ -131,6 +131,7 @@ module Octokit
131
131
  # @example List all issues events for issue #38 on octokit/octokit.rb
132
132
  # Octokit.issue_events("octokit/octokit.rb", 38)
133
133
  def issue_events(repo, number, options = {})
134
+ options = ensure_api_media_type(:project_card_events, options)
134
135
  paginate "#{Repository.path repo}/issues/#{number}/events", options
135
136
  end
136
137
 
@@ -50,6 +50,7 @@ module Octokit
50
50
  # @see https://developer.github.com/v3/gists/#get-a-single-gist
51
51
  # @see https://developer.github.com/v3/gists/#get-a-specific-revision-of-a-gist
52
52
  def gist(gist, options = {})
53
+ options = options.dup
53
54
  if sha = options.delete(:sha)
54
55
  get "gists/#{Gist.new(gist)}/#{sha}", options
55
56
  else
@@ -195,7 +196,7 @@ module Octokit
195
196
  # @example
196
197
  # @client.create_gist_comment('3528645', 'This is very helpful.')
197
198
  def create_gist_comment(gist_id, comment, options = {})
198
- options.merge!({:body => comment})
199
+ options = options.merge({:body => comment})
199
200
  post "gists/#{gist_id}/comments", options
200
201
  end
201
202
 
@@ -211,7 +212,7 @@ module Octokit
211
212
  # @example
212
213
  # @client.update_gist_comment('208sdaz3', '3528645', ':heart:')
213
214
  def update_gist_comment(gist_id, gist_comment_id, comment, options = {})
214
- options.merge!({:body => comment})
215
+ options = options.merge({:body => comment})
215
216
  patch "gists/#{gist_id}/comments/#{gist_comment_id}", options
216
217
  end
217
218
 
@@ -81,6 +81,7 @@ module Octokit
81
81
  # @param body [String] An optional concise description
82
82
  # @param options [Hash] A customizable set of options.
83
83
  # @option options [String] :assignee User login.
84
+ # @option options [Array<String>] :assignees User login.
84
85
  # @option options [Integer] :milestone Milestone number.
85
86
  # @option options [String] :labels List of comma separated Label names. Example: <tt>bug,ui,@high</tt>.
86
87
  # @return [Sawyer::Resource] Your newly created issue
@@ -120,6 +121,7 @@ module Octokit
120
121
  # @param number [Integer] Number ID of the issue
121
122
  # @param options [Hash] A customizable set of options.
122
123
  # @option options [String] :assignee User login.
124
+ # @option options [Array<String>] :assignees User login.
123
125
  # @option options [Integer] :milestone Milestone number.
124
126
  # @option options [Array<String>] :labels List of Label names. Example: <tt>['bug', 'ui', '@high']</tt>.
125
127
  # @return [Sawyer::Resource] The updated Issue
@@ -136,6 +138,7 @@ module Octokit
136
138
  # @param number [Integer] Number ID of the issue
137
139
  # @param options [Hash] A customizable set of options.
138
140
  # @option options [String] :assignee User login.
141
+ # @option options [Array<String>] :assignees User login.
139
142
  # @option options [Integer] :milestone Milestone number.
140
143
  # @option options [Array<String>] :labels List of Label names. Example: <tt>['bug', 'ui', '@high']</tt>.
141
144
  # @return [Sawyer::Resource] The updated Issue
@@ -179,6 +182,7 @@ module Octokit
179
182
  # @param body [String] Updated body of the issue
180
183
  # @param options [Hash] A customizable set of options.
181
184
  # @option options [String] :assignee User login.
185
+ # @option options [Array<String>] :assignees User login.
182
186
  # @option options [Integer] :milestone Milestone number.
183
187
  # @option options [String] :labels List of comma separated Label names. Example: <tt>bug,ui,@high</tt>.
184
188
  # @option options [String] :state State of the issue. <tt>open</tt> or <tt>closed</tt>
@@ -190,6 +194,7 @@ module Octokit
190
194
  # @option options [String] :title Updated title for the issue
191
195
  # @option options [String] :body Updated body of the issue
192
196
  # @option options [String] :assignee User login.
197
+ # @option options [Array<String>] :assignees User login.
193
198
  # @option options [Integer] :milestone Milestone number.
194
199
  # @option options [Array<String>] :labels List of Label names. Example: <tt>['bug', 'ui', '@high']</tt>.
195
200
  # @option options [String] :state State of the issue. <tt>open</tt> or <tt>closed</tt>
@@ -261,7 +266,7 @@ module Octokit
261
266
  # @return [Sawyer::Resource] The specific comment in question
262
267
  # @see https://developer.github.com/v3/issues/comments/#get-a-single-comment
263
268
  # @example Get comment #1194549 from an issue on octokit/octokit.rb
264
- # Octokit.issue_comments("octokit/octokit.rb", 1194549)
269
+ # Octokit.issue_comment("octokit/octokit.rb", 1194549)
265
270
  def issue_comment(repo, number, options = {})
266
271
  paginate "#{Repository.path repo}/issues/comments/#{number}", options
267
272
  end
@@ -316,6 +321,48 @@ module Octokit
316
321
  options = ensure_api_media_type(:issue_timelines, options)
317
322
  paginate "#{Repository.path repo}/issues/#{number}/timeline", options
318
323
  end
324
+
325
+ # Lists the available assignees for issues in a repository.
326
+ #
327
+ # @param repo [Integer, String, Repository, Hash] A GitHub repository
328
+ # @return [Array<Sawyer::Resource>] List of GitHub users.
329
+ # @see https://developer.github.com/v3/issues/assignees/#list-assignees
330
+ # @example Get available assignees on repository octokit/octokit.rb
331
+ # Octokit.list_assignees("octokit/octokit.rb")
332
+ def list_assignees(repo, options = {})
333
+ paginate "#{Repository.path repo}/assignees", options
334
+ end
335
+
336
+ # Add assignees to an issue
337
+ #
338
+ # @param repo [Integer, String, Repository, Hash] A GitHub repository
339
+ # @param number [Integer] Issue number
340
+ # @param assignees [Array<String>] Assignees to be added
341
+ # @return [Sawyer::Resource] Issue
342
+ # @see https://developer.github.com/v3/issues/assignees/#add-assignees-to-an-issue
343
+ # @example Add assignees "pengwynn" and "joeyw" to Issue #23 on octokit/octokit.rb
344
+ # Octokit.add_assignees("octokit/octokit.rb", 23, ["pengwynn", "joeyw"])
345
+ def add_assignees(repo, number, assignees, options = {})
346
+ post "#{Repository.path repo}/issues/#{number}/assignees", options.merge({:assignees => assignees})
347
+ end
348
+
349
+ # Remove assignees from an issue
350
+ #
351
+ # @param repo [Integer, String, Repository, Hash] A GitHub repository
352
+ # @param number [Integer] Issue number
353
+ # @param assignees [Array<String>] Assignees to be removed
354
+ # @param options [Hash] Header params for request
355
+ # @return [Sawyer::Resource] Issue
356
+ # @see https://developer.github.com/v3/issues/assignees/#remove-assignees-from-an-issue
357
+ # @example Remove assignees "pengwynn" and "joeyw" from Issue #23 on octokit/octokit.rb
358
+ # Octokit.remove_assignees("octokit/octokit.rb", 23, ["pengwynn", "joeyw"])
359
+ #
360
+ # @example Remove assignees "pengwynn" from Issue #23 on octokit/octokit.rb
361
+ # Octokit.remove_assignees("octokit/octokit.rb", 23, ["pengwynn"],
362
+ # :accept => "application/vnd.github.v3+json")
363
+ def remove_assignees(repo, number, assignees, options = {})
364
+ delete "#{Repository.path repo}/issues/#{number}/assignees", options.merge({:assignees => assignees})
365
+ end
319
366
  end
320
367
  end
321
368
  end
@@ -26,7 +26,7 @@ module Octokit
26
26
  # @return [Sawyer::Resource] A single label from the repository
27
27
  # @see https://developer.github.com/v3/issues/labels/#get-a-single-label
28
28
  # @example Get the "V3 Addition" label from octokit/octokit.rb
29
- # Octokit.labels("octokit/octokit.rb", "V3 Addition")
29
+ # Octokit.label("octokit/octokit.rb", "V3 Addition")
30
30
  def label(repo, name, options = {})
31
31
  get "#{Repository.path repo}/labels/#{name}", options
32
32
  end
@@ -78,7 +78,7 @@ module Octokit
78
78
  # This removes the label from the Issue
79
79
  #
80
80
  # @param repo [Integer, String, Repository, Hash] A GitHub repository
81
- # @param number [Fixnum] Number ID of the issue
81
+ # @param number [Integer] Number ID of the issue
82
82
  # @param label [String] String name of the label
83
83
  # @return [Array<Sawyer::Resource>] A list of the labels currently on the issue
84
84
  # @see https://developer.github.com/v3/issues/labels/#remove-a-label-from-an-issue
@@ -93,7 +93,7 @@ module Octokit
93
93
  # This removes the label from the Issue
94
94
  #
95
95
  # @param repo [Integer, String, Repository, Hash] A GitHub repository
96
- # @param number [Fixnum] Number ID of the issue
96
+ # @param number [Integer] Number ID of the issue
97
97
  # @return [Boolean] Success of operation
98
98
  # @see https://developer.github.com/v3/issues/labels/#remove-all-labels-from-an-issue
99
99
  # @example Remove all labels from Issue #23
@@ -105,7 +105,7 @@ module Octokit
105
105
  # List labels for a given issue
106
106
  #
107
107
  # @param repo [Integer, String, Repository, Hash] A GitHub repository
108
- # @param number [Fixnum] Number ID of the issue
108
+ # @param number [Integer] Number ID of the issue
109
109
  # @return [Array<Sawyer::Resource>] A list of the labels currently on the issue
110
110
  # @see https://developer.github.com/v3/issues/labels/#list-labels-on-an-issue
111
111
  # @example List labels for octokit/octokit.rb, issue # 1
@@ -117,7 +117,7 @@ module Octokit
117
117
  # Add label(s) to an Issue
118
118
  #
119
119
  # @param repo [Integer, String, Repository, Hash] A Github repository
120
- # @param number [Fixnum] Number ID of the issue
120
+ # @param number [Integer] Number ID of the issue
121
121
  # @param labels [Array] An array of labels to apply to this Issue
122
122
  # @return [Array<Sawyer::Resource>] A list of the labels currently on the issue
123
123
  # @see https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue
@@ -130,7 +130,7 @@ module Octokit
130
130
  # Replace all labels on an Issue
131
131
  #
132
132
  # @param repo [Integer, String, Repository, Hash] A Github repository
133
- # @param number [Fixnum] Number ID of the issue
133
+ # @param number [Integer] Number ID of the issue
134
134
  # @param labels [Array] An array of labels to use as replacement
135
135
  # @return [Array<Sawyer::Resource>] A list of the labels currently on the issue
136
136
  # @see https://developer.github.com/v3/issues/labels/#replace-all-labels-for-an-issue
@@ -143,7 +143,7 @@ module Octokit
143
143
  # Get labels for every issue in a milestone
144
144
  #
145
145
  # @param repo [Integer, String, Repository, Hash] A GitHub repository
146
- # @param number [Fixnum] Number ID of the milestone
146
+ # @param number [Integer] Number ID of the milestone
147
147
  # @return [Array<Sawyer::Resource>] A list of the labels across the milestone
148
148
  # @see http://developer.github.com/v3/issues/labels/#get-labels-for-every-issue-in-a-milestone
149
149
  # @example List all labels for milestone #2 on octokit/octokit.rb
@@ -35,7 +35,7 @@ module Octokit
35
35
  # @option options [String] :ref name of the Commit/Branch/Tag. Defaults to 'master'.
36
36
  # @return [Sawyer::Resource] The detail of the license file
37
37
  # @example
38
- # Octokit.license_contents 'benbalter/licensee'
38
+ # Octokit.repository_license_contents 'benbalter/licensee'
39
39
  def repository_license_contents(repo, options = {})
40
40
  options = ensure_api_media_type(:licenses, options)
41
41
  get "#{Repository.path repo}/license", options
@@ -0,0 +1,56 @@
1
+ module Octokit
2
+ class Client
3
+
4
+ # Methods for the Marketplace Listing API
5
+ #
6
+ # @see https://developer.github.com/v3/apps/marketplace/
7
+ module Marketplace
8
+
9
+ # List all plans for an app's marketplace listing
10
+ #
11
+ # @param options [Hash] A customizable set of options
12
+ #
13
+ # @see https://developer.github.com/v3/apps/marketplace/#list-all-plans-for-your-marketplace-listing
14
+ #
15
+ # @return [Array<Sawyer::Resource>] A list of plans
16
+ def list_plans(options = {})
17
+ paginate "/marketplace_listing/plans", options
18
+ end
19
+
20
+ # List all GitHub accounts on a specific plan
21
+ #
22
+ # @param plan_id [Integer] The id of the GitHub plan
23
+ # @param options [Hash] A customizable set of options
24
+ #
25
+ # @see https://developer.github.com/v3/apps/marketplace/#list-all-github-accounts-user-or-organization-on-a-specific-plan
26
+ #
27
+ # @return [Array<Sawyer::Resource>] A list of accounts
28
+ def list_accounts_for_plan(plan_id, options = {})
29
+ paginate "/marketplace_listing/plans/#{plan_id}/accounts", options
30
+ end
31
+
32
+ # Get the plan associated with a given GitHub account
33
+ #
34
+ # @param account_id [Integer] The id of the GitHub account
35
+ # @param options [Hash] A customizable set of options
36
+ #
37
+ # @see https://developer.github.com/v3/apps/marketplace/#check-if-a-github-account-is-associated-with-any-marketplace-listing
38
+ #
39
+ # @return <Sawyer::Resource> Account with plan details, or nil
40
+ def plan_for_account(account_id, options = {})
41
+ get "/marketplace_listing/accounts/#{account_id}", options
42
+ end
43
+
44
+ # Get user's Marketplace purchases
45
+ #
46
+ # @param options [Hash] A customizable set of options
47
+ #
48
+ # @see https://developer.github.com/v3/apps/marketplace/#get-a-users-marketplace-purchases
49
+ #
50
+ # @return [Array<Sawyer::Resource>] A list of Marketplace purchases
51
+ def marketplace_purchases(options = {})
52
+ get "/user/marketplace_purchases", options
53
+ end
54
+ end
55
+ end
56
+ end
@@ -108,10 +108,6 @@ module Octokit
108
108
  # Mark thread as read
109
109
  #
110
110
  # @param thread_id [Integer] Id of the thread to update.
111
- # @param options [Hash] Optional parameters.
112
- # @option options [Boolean] :unread Changes the unread status of the
113
- # threads.
114
- # @option options [Boolean] :read Inverse of 'unread'.
115
111
  # @return [Boolean] True if updated, false otherwise.
116
112
  # @see https://developer.github.com/v3/activity/notifications/#mark-a-thread-as-read
117
113
  # @example