octokit 4.13.0 → 4.19.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,11 +4,23 @@ module Octokit
4
4
  # Methods for the Apps API
5
5
  module Apps
6
6
 
7
+ # Get the authenticated App
8
+ #
9
+ # @param options [Hash] A customizable set of options
10
+ #
11
+ # @see https://developer.github.com/v3/apps/#get-the-authenticated-app
12
+ #
13
+ # @return [Sawyer::Resource] App information
14
+ def app(options = {})
15
+ opts = ensure_api_media_type(:integrations, options)
16
+ get "app", opts
17
+ end
18
+
7
19
  # Find all installations that belong to an App
8
20
  #
9
21
  # @param options [Hash] A customizable set of options
10
22
  #
11
- # @see https://developer.github.com/v3/apps/#find-installations
23
+ # @see https://developer.github.com/v3/apps/#list-installations
12
24
  #
13
25
  # @return [Array<Sawyer::Resource>] the total_count and an array of installations
14
26
  def find_app_installations(options = {})
@@ -31,7 +43,7 @@ module Octokit
31
43
  #
32
44
  # @param options [Hash] A customizable set of options
33
45
  #
34
- # @see https://developer.github.com/v3/apps/#list-installations-for-user
46
+ # @see https://developer.github.com/v3/apps/installations/#list-installations-for-a-user
35
47
  #
36
48
  # @return [Sawyer::Resource] the total_count and an array of installations
37
49
  def find_user_installations(options = {})
@@ -45,7 +57,7 @@ module Octokit
45
57
  #
46
58
  # @param id [Integer] Installation id
47
59
  #
48
- # @see https://developer.github.com/v3/apps/#get-a-single-installation
60
+ # @see https://developer.github.com/v3/apps/#get-an-installation
49
61
  #
50
62
  # @return [Sawyer::Resource] Installation information
51
63
  def installation(id, options = {})
@@ -58,7 +70,7 @@ module Octokit
58
70
  # @param installation [Integer] The id of a GitHub App Installation
59
71
  # @param options [Hash] A customizable set of options
60
72
  #
61
- # @see https://developer.github.com/v3/apps/#find-installations
73
+ # @see https://developer.github.com/v3/apps/#create-a-new-installation-token
62
74
  #
63
75
  # @return [<Sawyer::Resource>] An installation token
64
76
  def create_app_installation_access_token(installation, options = {})
@@ -82,7 +94,7 @@ module Octokit
82
94
  # @param organization [String] Organization GitHub login
83
95
  # @param options [Hash] A customizable set of options
84
96
  #
85
- # @see https://developer.github.com/v3/apps/#find-organization-installation
97
+ # @see https://developer.github.com/v3/apps/#get-an-organization-installation
86
98
  #
87
99
  # @return [Sawyer::Resource] Installation information
88
100
  def find_organization_installation(organization, options = {})
@@ -95,7 +107,7 @@ module Octokit
95
107
  # @param repo [String] A GitHub repository
96
108
  # @param options [Hash] A customizable set of options
97
109
  #
98
- # @see https://developer.github.com/v3/apps/#find-repository-installation
110
+ # @see https://developer.github.com/v3/apps/#get-a-repository-installation
99
111
  #
100
112
  # @return [Sawyer::Resource] Installation information
101
113
  def find_repository_installation(repo, options = {})
@@ -108,7 +120,7 @@ module Octokit
108
120
  # @param user [String] GitHub user login
109
121
  # @param options [Hash] A customizable set of options
110
122
  #
111
- # @see https://developer.github.com/v3/apps/#find-user-installation
123
+ # @see https://developer.github.com/v3/apps/#get-a-user-installation
112
124
  #
113
125
  # @return [Sawyer::Resource] Installation information
114
126
  def find_user_installation(user, options = {})
@@ -119,6 +131,7 @@ module Octokit
119
131
  # List repositories that are accessible to the authenticated installation
120
132
  #
121
133
  # @param options [Hash] A customizable set of options
134
+ #
122
135
  # @see https://developer.github.com/v3/apps/installations/#list-repositories
123
136
  #
124
137
  # @return [Sawyer::Resource] the total_count and an array of repositories
@@ -195,7 +208,7 @@ module Octokit
195
208
  # @param installation [Integer] The id of a GitHub App Installation
196
209
  # @param options [Hash] A customizable set of options
197
210
  #
198
- # @see https://developer.github.com/apps/building-integrations/setting-up-and-registering-github-apps/identifying-users-for-github-apps/
211
+ # @see https://developer.github.com/v3/apps/installations/#list-repositories-accessible-to-the-user-for-an-installation
199
212
  #
200
213
  # @return [Sawyer::Resource] the total_count and an array of repositories
201
214
  def find_installation_repositories_for_user(installation, options = {})
@@ -204,6 +217,19 @@ module Octokit
204
217
  data.repositories.concat last_response.data.repositories
205
218
  end
206
219
  end
220
+
221
+ # Delete an installation and uninstall a GitHub App
222
+ #
223
+ # @param installation [Integer] The id of a GitHub App Installation
224
+ # @param options [Hash] A customizable set of options
225
+ #
226
+ # @see https://developer.github.com/v3/apps/#delete-an-installation
227
+ #
228
+ # @return [Boolean] Success
229
+ def delete_installation(installation, options = {})
230
+ opts = ensure_api_media_type(:uninstall_github_app, options)
231
+ boolean_from_response :delete, "app/installations/#{installation}", opts
232
+ end
207
233
  end
208
234
  end
209
235
  end
@@ -59,7 +59,7 @@ module Octokit
59
59
  # client = Octokit::Client.new(:login => 'ctshryock', :password => 'secret')
60
60
  # client.create_authorization({:idempotent => true, :client_id => 'xxxx', :client_secret => 'yyyy', :scopes => ["user"]})
61
61
  def create_authorization(options = {})
62
- # Techincally we can omit scopes as GitHub has a default, however the
62
+ # Technically we can omit scopes as GitHub has a default, however the
63
63
  # API will reject us if we send a POST request with an empty body.
64
64
  options = options.dup
65
65
  if options.delete :idempotent
@@ -140,74 +140,6 @@ module Octokit
140
140
  sort
141
141
  end
142
142
 
143
- # Check if a token is valid.
144
- #
145
- # Applications can check if a token is valid without rate limits.
146
- #
147
- # @param token [String] 40 character GitHub OAuth access token
148
- #
149
- # @return [Sawyer::Resource] A single authorization for the authenticated user
150
- # @see https://developer.github.com/v3/oauth_authorizations/#check-an-authorization
151
- # @example
152
- # client = Octokit::Client.new(:client_id => 'abcdefg12345', :client_secret => 'secret')
153
- # client.check_application_authorization('deadbeef1234567890deadbeef987654321')
154
- def check_application_authorization(token, options = {})
155
- opts = options.dup
156
- key = opts.delete(:client_id) || client_id
157
- secret = opts.delete(:client_secret) || client_secret
158
-
159
- as_app(key, secret) do |app_client|
160
- app_client.get "applications/#{client_id}/tokens/#{token}", opts
161
- end
162
- end
163
-
164
- # Reset a token
165
- #
166
- # Applications can reset a token without requiring a user to re-authorize.
167
- #
168
- # @param token [String] 40 character GitHub OAuth access token
169
- #
170
- # @return [Sawyer::Resource] A single authorization for the authenticated user
171
- # @see https://developer.github.com/v3/oauth_authorizations/#reset-an-authorization
172
- # @example
173
- # client = Octokit::Client.new(:client_id => 'abcdefg12345', :client_secret => 'secret')
174
- # client.reset_application_authorization('deadbeef1234567890deadbeef987654321')
175
- def reset_application_authorization(token, options = {})
176
- opts = options.dup
177
- key = opts.delete(:client_id) || client_id
178
- secret = opts.delete(:client_secret) || client_secret
179
-
180
- as_app(key, secret) do |app_client|
181
- app_client.post "applications/#{client_id}/tokens/#{token}", opts
182
- end
183
- end
184
-
185
- # Revoke a token
186
- #
187
- # Applications can revoke (delete) a token
188
- #
189
- # @param token [String] 40 character GitHub OAuth access token
190
- #
191
- # @return [Boolean] Result
192
- # @see https://developer.github.com/v3/oauth_authorizations/#revoke-an-authorization-for-an-application
193
- # @example
194
- # client = Octokit::Client.new(:client_id => 'abcdefg12345', :client_secret => 'secret')
195
- # client.revoke_application_authorization('deadbeef1234567890deadbeef987654321')
196
- def revoke_application_authorization(token, options = {})
197
- opts = options.dup
198
- key = opts.delete(:client_id) || client_id
199
- secret = opts.delete(:client_secret) || client_secret
200
-
201
- as_app(key, secret) do |app_client|
202
- app_client.delete "applications/#{client_id}/tokens/#{token}", opts
203
-
204
- app_client.last_response.status == 204
205
- end
206
- rescue Octokit::NotFound
207
- false
208
- end
209
- alias :delete_application_authorization :revoke_application_authorization
210
-
211
143
  # Revoke all tokens for an app
212
144
  #
213
145
  # Applications can revoke all of their tokens in a single request
@@ -233,7 +165,7 @@ module Octokit
233
165
  def authorize_url(app_id = client_id, options = {})
234
166
  opts = options.dup
235
167
  if app_id.to_s.empty?
236
- raise Octokit::ApplicationCredentialsRequired.new "client_id required"
168
+ raise Octokit::ApplicationCredentialsRequired, "client_id required"
237
169
  end
238
170
  authorize_url = opts.delete(:endpoint) || Octokit.web_endpoint
239
171
  authorize_url << "login/oauth/authorize?client_id=#{app_id}"
@@ -0,0 +1,211 @@
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
+ ensure_api_media_type(:checks, options)
27
+ options[:name] = name
28
+ options[:head_sha] = head_sha
29
+
30
+ post "#{Repository.path repo}/check-runs", options
31
+ end
32
+
33
+ # Update a check run
34
+ #
35
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
36
+ # @param id [Integer] The ID of the check run
37
+ # @return [Sawyer::Resource] A hash representing the updated check run
38
+ # @see https://developer.github.com/v3/checks/runs/#update-a-check-run
39
+ # @example Update a check run
40
+ # check_run = @client.update_check_run("octocat/Hello-World", 51295429, status: "in_progress")
41
+ # check_run.id # => 51295429
42
+ # check_run.status # => "in_progress"
43
+ def update_check_run(repo, id, options = {})
44
+ ensure_api_media_type(:checks, options)
45
+
46
+ patch "#{Repository.path repo}/check-runs/#{id}", options
47
+ end
48
+
49
+ # List check runs for a specific ref
50
+ #
51
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
52
+ # @param ref [String] A SHA, branch name, or tag name
53
+ # @param options [Hash] A set of optional filters
54
+ # @option options [String] :check_name Returns check runs with the specified <tt>name</tt>
55
+ # @option options [String] :status Returns check runs with the specified <tt>status</tt>
56
+ # @option options [String] :filter Filters check runs by their <tt>completed_at</tt> timestamp
57
+ # @return [Sawyer::Resource] A hash representing a collection of check runs
58
+ # @see https://developer.github.com/v3/checks/runs/#list-check-runs-for-a-specific-ref
59
+ # @example List check runs for a specific ref
60
+ # result = @client.check_runs_for_ref("octocat/Hello-World", "7638417db6d59f3c431d3e1f261cc637155684cd", status: "in_progress")
61
+ # result.total_count # => 1
62
+ # result.check_runs.count # => 1
63
+ # result.check_runs[0].id # => 51295429
64
+ # result.check_runs[0].status # => "in_progress"
65
+ def check_runs_for_ref(repo, ref, options = {})
66
+ ensure_api_media_type(:checks, options)
67
+
68
+ get "#{Repository.path repo}/commits/#{ref}/check-runs", options
69
+ end
70
+ alias :list_check_runs_for_ref :check_runs_for_ref
71
+
72
+ # List check runs in a check suite
73
+ #
74
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
75
+ # @param id [Integer] The ID of the check suite
76
+ # @param options [Hash] A set of optional filters
77
+ # @option options [String] :check_name Returns check runs with the specified <tt>name</tt>
78
+ # @option options [String] :status Returns check runs with the specified <tt>status</tt>
79
+ # @option options [String] :filter Filters check runs by their <tt>completed_at</tt> timestamp
80
+ # @return [Sawyer::Resource] A hash representing a collection of check runs
81
+ # @see https://developer.github.com/v3/checks/runs/#list-check-runs-in-a-check-suite
82
+ # @example List check runs in a check suite
83
+ # result = @client.check_runs_for_check_suite("octocat/Hello-World", 50440400, status: "in_progress")
84
+ # result.total_count # => 1
85
+ # result.check_runs.count # => 1
86
+ # result.check_runs[0].check_suite.id # => 50440400
87
+ # result.check_runs[0].status # => "in_progress"
88
+ def check_runs_for_check_suite(repo, id, options = {})
89
+ ensure_api_media_type(:checks, options)
90
+
91
+ get "#{Repository.path repo}/check-suites/#{id}/check-runs", options
92
+ end
93
+ alias :list_check_runs_for_check_suite :check_runs_for_check_suite
94
+
95
+ # Get a single check run
96
+ #
97
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
98
+ # @param id [Integer] The ID of the check run
99
+ # @return [Sawyer::Resource] A hash representing the check run
100
+ # @see https://developer.github.com/v3/checks/runs/#get-a-single-check-run
101
+ def check_run(repo, id, options = {})
102
+ ensure_api_media_type(:checks, options)
103
+
104
+ get "#{Repository.path repo}/check-runs/#{id}", options
105
+ end
106
+
107
+ # List annotations for a check run
108
+ #
109
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
110
+ # @param id [Integer] The ID of the check run
111
+ # @return [Array<Sawyer::Resource>] An array of hashes representing check run annotations
112
+ # @see https://developer.github.com/v3/checks/runs/#list-annotations-for-a-check-run
113
+ # @example List annotations for a check run
114
+ # annotations = @client.check_run_annotations("octocat/Hello-World", 51295429)
115
+ # annotations.count # => 1
116
+ # annotations[0].path # => "README.md"
117
+ # annotations[0].message # => "Looks good!"
118
+ def check_run_annotations(repo, id, options = {})
119
+ ensure_api_media_type(:checks, options)
120
+
121
+ get "#{Repository.path repo}/check-runs/#{id}/annotations", options
122
+ end
123
+
124
+ # Methods for Check Suites
125
+ #
126
+ # @see https://developer.github.com/v3/checks/suites/
127
+
128
+ # Get a single check suite
129
+ #
130
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
131
+ # @param id [Integer] The ID of the check suite
132
+ # @return [Sawyer::Resource] A hash representing the check suite
133
+ # @see https://developer.github.com/v3/checks/suites/#get-a-single-check-suite
134
+ def check_suite(repo, id, options = {})
135
+ ensure_api_media_type(:checks, options)
136
+
137
+ get "#{Repository.path repo}/check-suites/#{id}", options
138
+ end
139
+
140
+ # List check suites for a specific ref
141
+ #
142
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
143
+ # @param ref [String] A SHA, branch name, or tag name
144
+ # @param options [Hash] A set of optional filters
145
+ # @option options [Integer] :app_id Filters check suites by GitHub App <tt>id</tt>
146
+ # @option options [String] :check_name Filters checks suites by the <tt>name</tt> of the check run
147
+ # @return [Sawyer::Resource] A hash representing a collection of check suites
148
+ # @see https://developer.github.com/v3/checks/suites/#list-check-suites-for-a-specific-ref
149
+ # @example List check suites for a specific ref
150
+ # result = @client.check_suites_for_ref("octocat/Hello-World", "7638417db6d59f3c431d3e1f261cc637155684cd", app_id: 76765)
151
+ # result.total_count # => 1
152
+ # result.check_suites.count # => 1
153
+ # result.check_suites[0].id # => 50440400
154
+ # result.check_suites[0].app.id # => 76765
155
+ def check_suites_for_ref(repo, ref, options = {})
156
+ ensure_api_media_type(:checks, options)
157
+
158
+ get "#{Repository.path repo}/commits/#{ref}/check-suites", options
159
+ end
160
+ alias :list_check_suites_for_ref :check_suites_for_ref
161
+
162
+ # Set preferences for check suites on a repository
163
+ #
164
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
165
+ # @param options [Hash] Preferences to set
166
+ # @return [Sawyer::Resource] A hash representing the repository's check suite preferences
167
+ # @see https://developer.github.com/v3/checks/suites/#set-preferences-for-check-suites-on-a-repository
168
+ # @example Set preferences for check suites on a repository
169
+ # result = @client.set_check_suite_preferences("octocat/Hello-World", auto_trigger_checks: [{ app_id: 76765, setting: false }])
170
+ # result.preferences.auto_trigger_checks.count # => 1
171
+ # result.preferences.auto_trigger_checks[0].app_id # => 76765
172
+ # result.preferences.auto_trigger_checks[0].setting # => false
173
+ # result.repository.full_name # => "octocat/Hello-World"
174
+ def set_check_suite_preferences(repo, options = {})
175
+ ensure_api_media_type(:checks, options)
176
+
177
+ patch "#{Repository.path repo}/check-suites/preferences", options
178
+ end
179
+
180
+ # Create a check suite
181
+ #
182
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
183
+ # @param head_sha [String] The SHA of the commit to check
184
+ # @return [Sawyer::Resource] A hash representing the new check suite
185
+ # @see https://developer.github.com/v3/checks/suites/#create-a-check-suite
186
+ # @example Create a check suite
187
+ # check_suite = @client.create_check_suite("octocat/Hello-World", "7638417db6d59f3c431d3e1f261cc637155684cd")
188
+ # check_suite.head_sha # => "7638417db6d59f3c431d3e1f261cc637155684cd"
189
+ # check_suite.status # => "queued"
190
+ def create_check_suite(repo, head_sha, options = {})
191
+ ensure_api_media_type(:checks, options)
192
+ options[:head_sha] = head_sha
193
+
194
+ post "#{Repository.path repo}/check-suites", options
195
+ end
196
+
197
+ # Rerequest check suite
198
+ #
199
+ # @param repo [Integer, String, Hash, Repository] A GitHub repository
200
+ # @param id [Integer] The ID of the check suite
201
+ # @return [Boolean] True if successful, raises an error otherwise
202
+ # @see https://developer.github.com/v3/checks/suites/#rerequest-check-suite
203
+ def rerequest_check_suite(repo, id, options = {})
204
+ ensure_api_media_type(:checks, options)
205
+
206
+ post "#{Repository.path repo}/check-suites/#{id}/rerequest", options
207
+ true
208
+ end
209
+ end
210
+ end
211
+ 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