octokit 4.7.0 → 4.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 24ad9c72b02054c430f10ff8614064cce38297b2
4
- data.tar.gz: 11f0aebf4f5266212ebaa314702622f7fdf0d6be
3
+ metadata.gz: 6f3b264edbac32970be83bf7b14081732f130d12
4
+ data.tar.gz: 15af8a2c6a80cfe94fdd14bb56a68dfbc772cb45
5
5
  SHA512:
6
- metadata.gz: 0067cbdcbdd2bd217622159bc716c5f2ba50b7ae2a6bcff8234ba0ec8a0dcd1c4d7f009d6391d6f70c8f7fb5ff907ed27e56c0ba9204edb021e8d5ef6422df16
7
- data.tar.gz: d1c6ee18fcdbbcd0c0d2115e3bdf24c832e57d03a8454d1a3ad7f474733854d9992f4323a504256117ccc7769120971bb1634417a5d710ff49ee635187716a48
6
+ metadata.gz: 7a77fc4d18fbc0dac671774e2486ba93aee5a434490db33579afa768a0386fbf12fcc251ff19fa514fa4f0bf564c643538b6b6a33360311bd05d789bfa6914e0
7
+ data.tar.gz: 134a0f49e4ade9f5b0ffc377b9394d4597c6fe69a871d27b2c90912024b4cd52ab1efc7de6019fcf3140fb756a2a9023f1fa742443227f63888113217ede8a16
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009-2016 Wynn Netherland, Adam Stacoviak, Erik Michaels-Ober
1
+ Copyright (c) 2009-2017 Wynn Netherland, Adam Stacoviak, Erik Michaels-Ober
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -96,6 +96,21 @@ client = Octokit::Client.new(:login => 'defunkt', :password => 'c0d3b4ssssss!')
96
96
  client.user
97
97
  ```
98
98
 
99
+ ### Additional Query Parameters
100
+
101
+ When passing additional parameters to GET based request use the following syntax:
102
+
103
+ ```ruby
104
+ # query: { parameter_name: 'value' }
105
+ # Example: Get repository listing by owner in ascending order
106
+ client.repos({}, query: {type: 'owner', sort: 'asc'})
107
+
108
+ # Example: Get contents of a repository by ref
109
+ # https://api.github.com/repos/octokit/octokit.rb/contents/path/to/file.rb?ref=some-other-branch
110
+ client.contents('octokit/octokit.rb', path: 'path/to/file.rb', query: {ref: 'some-other-branch'})
111
+
112
+ ```
113
+
99
114
  [API methods]: http://octokit.github.io/octokit.rb/method_list.html
100
115
 
101
116
  ### Consuming resources
@@ -262,6 +277,14 @@ user = client.user 'defunkt'
262
277
  [access scopes]: http://developer.github.com/v3/oauth/#scopes
263
278
  [app-creds]: http://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications
264
279
 
280
+ ## Default results per_page
281
+
282
+ Default results from the GitHub API are 30, if you wish to add more you must do so during Octokit configuration.
283
+
284
+ ```ruby
285
+ Octokit::Client.new(access_token: "<your 40 char token>", per_page: 100)
286
+ ```
287
+
265
288
  ## Pagination
266
289
 
267
290
  Many GitHub API resources are [paginated][]. While you may be tempted to start
@@ -270,7 +293,7 @@ previous, and last pages for you in the `Link` response header as [Hypermedia
270
293
  link relations](#hypermedia-agent).
271
294
 
272
295
  ```ruby
273
- issues = Octokit.issues 'rails/rails', :per_page => 100
296
+ issues = Octokit.issues 'rails/rails'
274
297
  issues.concat Octokit.last_response.rels[:next].get.data
275
298
  ```
276
299
 
@@ -526,8 +549,10 @@ traffic:
526
549
 
527
550
  ```ruby
528
551
  stack = Faraday::RackBuilder.new do |builder|
529
- builder.response :logger
552
+ builder.use Octokit::Middleware::FollowRedirects
530
553
  builder.use Octokit::Response::RaiseError
554
+ builder.use Octokit::Response::FeedParser
555
+ builder.response :logger
531
556
  builder.adapter Faraday.default_adapter
532
557
  end
533
558
  Octokit.middleware = stack
@@ -655,6 +680,7 @@ implementations:
655
680
  * Ruby 2.1
656
681
  * Ruby 2.2
657
682
  * Ruby 2.3
683
+ * Ruby 2.4
658
684
 
659
685
  If something doesn't work on one of these Ruby versions, it's a bug.
660
686
 
@@ -10,6 +10,7 @@ require 'octokit/repository'
10
10
  require 'octokit/user'
11
11
  require 'octokit/organization'
12
12
  require 'octokit/preview'
13
+ require 'octokit/client/apps'
13
14
  require 'octokit/client/authorizations'
14
15
  require 'octokit/client/commits'
15
16
  require 'octokit/client/commit_comments'
@@ -22,13 +23,13 @@ require 'octokit/client/feeds'
22
23
  require 'octokit/client/gists'
23
24
  require 'octokit/client/gitignore'
24
25
  require 'octokit/client/hooks'
25
- require 'octokit/client/integrations'
26
26
  require 'octokit/client/issues'
27
27
  require 'octokit/client/labels'
28
28
  require 'octokit/client/legacy_search'
29
29
  require 'octokit/client/licenses'
30
30
  require 'octokit/client/meta'
31
31
  require 'octokit/client/markdown'
32
+ require 'octokit/client/marketplace'
32
33
  require 'octokit/client/milestones'
33
34
  require 'octokit/client/notifications'
34
35
  require 'octokit/client/objects'
@@ -78,13 +79,14 @@ module Octokit
78
79
  include Octokit::Client::Gists
79
80
  include Octokit::Client::Gitignore
80
81
  include Octokit::Client::Hooks
81
- include Octokit::Client::Integrations
82
+ include Octokit::Client::Apps
82
83
  include Octokit::Client::Issues
83
84
  include Octokit::Client::Labels
84
85
  include Octokit::Client::LegacySearch
85
86
  include Octokit::Client::Licenses
86
87
  include Octokit::Client::Meta
87
88
  include Octokit::Client::Markdown
89
+ include Octokit::Client::Marketplace
88
90
  include Octokit::Client::Milestones
89
91
  include Octokit::Client::Notifications
90
92
  include Octokit::Client::Objects
@@ -0,0 +1,164 @@
1
+ module Octokit
2
+ class Client
3
+
4
+ # Methods for the Apps API
5
+ module Apps
6
+
7
+ # Find all installations that belong to an App
8
+ #
9
+ # @param options [Hash] A customizable set of options
10
+ #
11
+ # @see https://developer.github.com/v3/apps/#find-installations
12
+ #
13
+ # @return [Array<Sawyer::Resource>] A list of installations
14
+ def find_app_installations(options = {})
15
+ opts = ensure_api_media_type(:integrations, options)
16
+ paginate "app/installations", opts
17
+ end
18
+ alias find_installations find_app_installations
19
+
20
+ def find_integration_installations(options = {})
21
+ octokit_warn(
22
+ "Deprecated: Octokit::Client::Apps#find_integration_installations "\
23
+ "method is deprecated. Please update your call to use "\
24
+ "Octokit::Client::Apps#find_app_installations before the next major "\
25
+ "Octokit version update."
26
+ )
27
+ find_app_installations(options)
28
+ end
29
+
30
+ # Find all installations that are accessible to the authenticated user
31
+ #
32
+ # @param options [Hash] A customizable set of options
33
+ #
34
+ # @see https://developer.github.com/v3/apps/#list-installations-for-user
35
+ #
36
+ # @return [Array<Sawyer::Resource>] A list of installations
37
+ def find_user_installations(options = {})
38
+ opts = ensure_api_media_type(:integrations, options)
39
+ paginate "user/installations", opts
40
+ end
41
+
42
+ # Get a single installation
43
+ #
44
+ # @param id [Integer] Installation id
45
+ #
46
+ # @see https://developer.github.com/v3/apps/#get-a-single-installation
47
+ #
48
+ # @return [Sawyer::Resource] Installation information
49
+ def installation(id, options = {})
50
+ opts = ensure_api_media_type(:integrations, options)
51
+ get "app/installations/#{id}", opts
52
+ end
53
+
54
+ # Create a new installation token
55
+ #
56
+ # @param installation [Integer] The id of a GitHub App Installation
57
+ # @param options [Hash] A customizable set of options
58
+ #
59
+ # @see https://developer.github.com/v3/apps/#find-installations
60
+ #
61
+ # @return [<Sawyer::Resource>] An installation token
62
+ def create_app_installation_access_token(installation, options = {})
63
+ opts = ensure_api_media_type(:integrations, options)
64
+ post "installations/#{installation}/access_tokens", opts
65
+ end
66
+ alias create_installation_access_token create_app_installation_access_token
67
+
68
+ def create_integration_installation_access_token(installation, options = {})
69
+ octokit_warn(
70
+ "Deprecated: Octokit::Client::Apps#create_integration_installation_access_token "\
71
+ "method is deprecated. Please update your call to use "\
72
+ "Octokit::Client::Apps#create_app_installation_access_token before the next major "\
73
+ "Octokit version update."
74
+ )
75
+ create_app_installation_access_token(installation, options)
76
+ end
77
+
78
+ # List repositories that are accessible to the authenticated installation
79
+ #
80
+ # @param options [Hash] A customizable set of options
81
+ # @see https://developer.github.com/v3/apps/installations/#list-repositories
82
+ #
83
+ # @return [Array<Sawyer::Resource>] A list of repositories
84
+ def list_app_installation_repositories(options = {})
85
+ opts = ensure_api_media_type(:integrations, options)
86
+ paginate "installation/repositories", opts
87
+ end
88
+ alias list_installation_repos list_app_installation_repositories
89
+
90
+ def list_integration_installation_repositories(options = {})
91
+ octokit_warn(
92
+ "Deprecated: Octokit::Client::Apps#list_integration_installation_repositories "\
93
+ "method is deprecated. Please update your call to use "\
94
+ "Octokit::Client::Apps#list_app_installation_repositories before the next major "\
95
+ "Octokit version update."
96
+ )
97
+ list_app_installation_repositories(options)
98
+ end
99
+
100
+ # Add a single repository to an installation
101
+ #
102
+ # @param installation [Integer] The id of a GitHub App Installation
103
+ # @param repo [Integer] The id of the GitHub repository
104
+ # @param options [Hash] A customizable set of options
105
+ #
106
+ # @see https://developer.github.com/v3/apps/installations/#add-repository-to-installation
107
+ #
108
+ # @return [Boolean] Success
109
+ def add_repository_to_app_installation(installation, repo, options = {})
110
+ opts = ensure_api_media_type(:integrations, options)
111
+ boolean_from_response :put, "user/installations/#{installation}/repositories/#{repo}", opts
112
+ end
113
+ alias add_repo_to_installation add_repository_to_app_installation
114
+
115
+ def add_repository_to_integration_installation(installation, repo, options = {})
116
+ octokit_warn(
117
+ "Deprecated: Octokit::Client::Apps#add_repository_to_integration_installation "\
118
+ "method is deprecated. Please update your call to use "\
119
+ "Octokit::Client::Apps#add_repository_to_app_installation before the next major "\
120
+ "Octokit version update."
121
+ )
122
+ add_repository_to_app_installation(installation, repo, options)
123
+ end
124
+
125
+ # Remove a single repository to an installation
126
+ #
127
+ # @param installation [Integer] The id of a GitHub App Installation
128
+ # @param repo [Integer] The id of the GitHub repository
129
+ # @param options [Hash] A customizable set of options
130
+ #
131
+ # @see https://developer.github.com/v3/apps/installations/#remove-repository-from-installation
132
+ #
133
+ # @return [Boolean] Success
134
+ def remove_repository_from_app_installation(installation, repo, options = {})
135
+ opts = ensure_api_media_type(:integrations, options)
136
+ boolean_from_response :delete, "user/installations/#{installation}/repositories/#{repo}", opts
137
+ end
138
+ alias remove_repo_from_installation remove_repository_from_app_installation
139
+
140
+ def remove_repository_from_integration_installation(installation, repo, options = {})
141
+ octokit_warn(
142
+ "Deprecated: Octokit::Client::Apps#remove_repository_from_integration_installation "\
143
+ "method is deprecated. Please update your call to use "\
144
+ "Octokit::Client::Apps#remove_repository_from_app_installation before the next major "\
145
+ "Octokit version update."
146
+ )
147
+ remove_repository_from_app_installation(installation, repo, options)
148
+ end
149
+
150
+ # List repositories accessible to the user for an installation
151
+ #
152
+ # @param installation [Integer] The id of a GitHub App Installation
153
+ # @param options [Hash] A customizable set of options
154
+ #
155
+ # @see https://developer.github.com/apps/building-integrations/setting-up-and-registering-github-apps/identifying-users-for-github-apps/
156
+ #
157
+ # @return [Array<Sawyer::Resource>] A list of repositories
158
+ def find_installation_repositories_for_user(installation, options = {})
159
+ opts = ensure_api_media_type(:integrations, options)
160
+ paginate "user/installations/#{installation}/repositories", opts
161
+ end
162
+ end
163
+ end
164
+ end
@@ -316,6 +316,19 @@ module Octokit
316
316
  options = ensure_api_media_type(:issue_timelines, options)
317
317
  paginate "#{Repository.path repo}/issues/#{number}/timeline", options
318
318
  end
319
+
320
+ # Add assignees to an issue
321
+ #
322
+ # @param repo [Integer, String, Repository, Hash] A GitHub repository
323
+ # @param number [Integer] Issue number
324
+ # @param assignees [Array] Assignees to be added
325
+ # @return [Sawyer::Resource] Issue
326
+ # @see https://developer.github.com/v3/issues/assignees/#add-assignees-to-an-issue
327
+ # @example Add assignees "pengwynn" and "joeyw" to Issue #23 on octokit/octokit.rb
328
+ # Octokit.add_assignees("octokit/octokit.rb", 23, ["pengwynn", "joeyw"])
329
+ def add_assignees(repo, number, assignees, options = {})
330
+ post "#{Repository.path repo}/issues/#{number}/assignees", options.merge({:assignees => assignees})
331
+ end
319
332
  end
320
333
  end
321
334
  end
@@ -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,60 @@
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
+ opts = ensure_api_media_type(:marketplace, options)
18
+ paginate "/marketplace_listing/plans", opts
19
+ end
20
+
21
+ # List all GitHub accounts on a specific plan
22
+ #
23
+ # @param plan_id [Integer] The id of the GitHub plan
24
+ # @param options [Hash] A customizable set of options
25
+ #
26
+ # @see https://developer.github.com/v3/apps/marketplace/#list-all-github-accounts-user-or-organization-on-a-specific-plan
27
+ #
28
+ # @return [Array<Sawyer::Resource>] A list of accounts
29
+ def list_accounts_for_plan(plan_id, options = {})
30
+ opts = ensure_api_media_type(:marketplace, options)
31
+ paginate "/marketplace_listing/plans/#{plan_id}/accounts", opts
32
+ end
33
+
34
+ # Get the plan associated with a given GitHub account
35
+ #
36
+ # @param account_id [Integer] The id of the GitHub account
37
+ # @param options [Hash] A customizable set of options
38
+ #
39
+ # @see https://developer.github.com/v3/apps/marketplace/#check-if-a-github-account-is-associated-with-any-marketplace-listing
40
+ #
41
+ # @return <Sawyer::Resource> Account with plan details, or nil
42
+ def plan_for_account(account_id, options = {})
43
+ opts = ensure_api_media_type(:marketplace, options)
44
+ get "/marketplace_listing/accounts/#{account_id}", opts
45
+ end
46
+
47
+ # Get user's Marketplace purchases
48
+ #
49
+ # @param options [Hash] A customizable set of options
50
+ #
51
+ # @see https://developer.github.com/v3/apps/marketplace/#get-a-users-marketplace-purchases
52
+ #
53
+ # @return [Array<Sawyer::Resource>] A list of Marketplace purchases
54
+ def marketplace_purchases(options = {})
55
+ opts = ensure_api_media_type(:marketplace, options)
56
+ get "/user/marketplace_purchases", opts
57
+ end
58
+ end
59
+ end
60
+ 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
@@ -220,7 +220,6 @@ module Octokit
220
220
  # @example
221
221
  # @client.organization_invitations('github')
222
222
  def organization_invitations(org, options = {})
223
- options = ensure_api_media_type(:org_memberships, options)
224
223
  get "#{Organization.path org}/invitations", options
225
224
  end
226
225
  alias :org_invitations :organization_invitations
@@ -236,7 +235,6 @@ module Octokit
236
235
  # @example
237
236
  # @client.outside_collaborators('github')
238
237
  def outside_collaborators(org, options={})
239
- options = ensure_api_media_type(:org_memberships, options)
240
238
  get "#{Organization.path org}/outside_collaborators", options
241
239
  end
242
240
 
@@ -252,7 +250,6 @@ module Octokit
252
250
  # @example
253
251
  # @client.remove_outside_collaborator('github', 'lizzhale')
254
252
  def remove_outside_collaborator(org, user, options={})
255
- options = ensure_api_media_type(:org_memberships, options)
256
253
  boolean_from_response :delete, "#{Organization.path org}/outside_collaborators/#{user}", options
257
254
  end
258
255
 
@@ -268,7 +265,6 @@ module Octokit
268
265
  # @example
269
266
  # @client.convert_to_outside_collaborator('github', 'lizzhale')
270
267
  def convert_to_outside_collaborator(org, user, options={})
271
- options = ensure_api_media_type(:org_memberships, options)
272
268
  boolean_from_response :put, "#{Organization.path org}/outside_collaborators/#{user}", options
273
269
  end
274
270
 
@@ -296,6 +292,7 @@ module Octokit
296
292
  # @option options [String] :name Team name.
297
293
  # @option options [Array<String>] :repo_names Repositories for the team.
298
294
  # @option options [Array<String>] :maintainers Maintainers for the team.
295
+ # @option options [Integer] :parent_team_id ID of a team to set as the parent team.
299
296
  # @return [Sawyer::Resource] Hash representing new team.
300
297
  # @see https://developer.github.com/v3/orgs/teams/#create-team
301
298
  # @example
@@ -307,6 +304,9 @@ module Octokit
307
304
  if options.key?(:permission)
308
305
  octokit_warn "Deprecated: Passing :permission option to #create_team. Assign team repository permission by passing :permission to #add_team_repository instead."
309
306
  end
307
+ if options.key?(:parent_team_id)
308
+ options = ensure_api_media_type(:nested_teams, options)
309
+ end
310
310
  post "#{Organization.path org}/teams", options
311
311
  end
312
312
 
@@ -323,6 +323,20 @@ module Octokit
323
323
  get "teams/#{team_id}", options
324
324
  end
325
325
 
326
+ # List child teams
327
+ #
328
+ # Requires authenticated organization member.
329
+ #
330
+ # @param team_id [Integer] Team id.
331
+ # @return [Sawyer::Resource] Hash representing team.
332
+ # @see https://developer.github.com/v3/orgs/teams/#list-child-teams
333
+ # @example
334
+ # @client.child_teams(100000, :accept => "application/vnd.github.hellcat-preview+json")
335
+ def child_teams(team_id, options = {})
336
+ options = ensure_api_media_type(:nested_teams, options)
337
+ paginate "teams/#{team_id}/teams", options
338
+ end
339
+
326
340
  # Update team
327
341
  #
328
342
  # Requires authenticated organization owner.
@@ -334,6 +348,7 @@ module Octokit
334
348
  # `pull` - team members can pull, but not push to or administer these repositories.
335
349
  # `push` - team members can pull and push, but not administer these repositories.
336
350
  # `admin` - team members can pull, push and administer these repositories.
351
+ # @option options [Integer] :parent_team_id ID of a team to set as the parent team.
337
352
  # @return [Sawyer::Resource] Hash representing updated team.
338
353
  # @see https://developer.github.com/v3/orgs/teams/#edit-team
339
354
  # @example
@@ -342,6 +357,9 @@ module Octokit
342
357
  # :permission => 'push'
343
358
  # })
344
359
  def update_team(team_id, options = {})
360
+ if options.key?(:parent_team_id)
361
+ options = ensure_api_media_type(:nested_teams, options)
362
+ end
345
363
  patch "teams/#{team_id}", options
346
364
  end
347
365
 
@@ -444,7 +462,6 @@ module Octokit
444
462
  # @example
445
463
  # @client.team_invitations('github')
446
464
  def team_invitations(team_id, options = {})
447
- options = ensure_api_media_type(:org_memberships, options)
448
465
  get "teams/#{team_id}/invitations", options
449
466
  end
450
467
 
@@ -610,7 +627,7 @@ module Octokit
610
627
  #
611
628
  # @return [Sawyer::Resource] Hash of team membership info
612
629
  #
613
- # @see https://developer.github.com/v3/orgs/teams/#add-team-membership
630
+ # @see https://developer.github.com/v3/orgs/teams/#add-or-update-team-membership
614
631
  #
615
632
  # @example Check if a user has a membership for a team
616
633
  # @client.add_team_membership(1234, 'pengwynn')
@@ -358,7 +358,6 @@ module Octokit
358
358
  # @example
359
359
  # @client.permission_level('octokit/octokit.rb', 'lizzhale')
360
360
  def permission_level(repo, collaborator, options={})
361
- options = ensure_api_media_type(:org_memberships, options)
362
361
  get "#{Repository.path repo}/collaborators/#{collaborator}/permission", options
363
362
  end
364
363
 
@@ -516,7 +515,7 @@ module Octokit
516
515
  # @param repo [Integer, String, Hash, Repository] A GitHub repository.
517
516
  # @param branch [String] Branch name
518
517
  # @option options [Hash] :required_status_checks If not null, the following keys are required:
519
- # <tt>:include_admins [boolean] Enforce required status checks for repository administrators.</tt>
518
+ # <tt>:enforce_admins [boolean] Enforce required status checks for repository administrators.</tt>
520
519
  # <tt>:strict [boolean] Require branches to be up to date before merging.</tt>
521
520
  # <tt>:contexts [Array] The list of status checks to require in order to merge into this branch</tt>
522
521
  #
@@ -17,8 +17,7 @@ module Octokit
17
17
  #
18
18
  # @return [Array<Sawyer::Resource>] Array of Hashes representing the reviews
19
19
  def pull_request_reviews(repo, id, options = {})
20
- options = ensure_api_media_type(:reviews, options)
21
- get "#{Repository.path repo}/pulls/#{id}/reviews", options
20
+ paginate "#{Repository.path repo}/pulls/#{id}/reviews", options
22
21
  end
23
22
 
24
23
  # Get a single review
@@ -33,7 +32,6 @@ module Octokit
33
32
  #
34
33
  # @return [Sawyer::Resource] Hash representing the review
35
34
  def pull_request_review(repo, number, review, options = {})
36
- options = ensure_api_media_type(:reviews, options)
37
35
  get "#{Repository.path repo}/pulls/#{number}/reviews/#{review}", options
38
36
  end
39
37
 
@@ -49,7 +47,6 @@ module Octokit
49
47
  #
50
48
  # @return [Sawyer::Resource] Hash representing the deleted review
51
49
  def delete_pull_request_review(repo, number, review, options = {})
52
- options = ensure_api_media_type(:reviews, options)
53
50
  delete "#{Repository.path repo}/pulls/#{number}/reviews/#{review}", options
54
51
  end
55
52
 
@@ -65,8 +62,7 @@ module Octokit
65
62
  #
66
63
  # @return [Array<Sawyer::Resource>] Array of Hashes representing the review comments
67
64
  def pull_request_review_comments(repo, number, review, options = {})
68
- options = ensure_api_media_type(:reviews, options)
69
- get "#{Repository.path repo}/pulls/#{number}/reviews/#{review}/comments", options
65
+ paginate "#{Repository.path repo}/pulls/#{number}/reviews/#{review}/comments", options
70
66
  end
71
67
 
72
68
  # Create a pull request review
@@ -94,7 +90,6 @@ module Octokit
94
90
  #
95
91
  # @return [Sawyer::Resource>] Hash respresenting the review
96
92
  def create_pull_request_review(repo, id, options = {})
97
- options = ensure_api_media_type(:reviews, options)
98
93
  post "#{Repository.path repo}/pulls/#{id}/reviews", options
99
94
  end
100
95
 
@@ -116,7 +111,6 @@ module Octokit
116
111
  # @return [Sawyer::Resource] Hash respresenting the review
117
112
  def submit_pull_request_review(repo, number, review, event, options = {})
118
113
  options = options.merge(event: event)
119
- options = ensure_api_media_type(:reviews, options)
120
114
  post "#{Repository.path repo}/pulls/#{number}/reviews/#{review}/events", options
121
115
  end
122
116
 
@@ -134,7 +128,6 @@ module Octokit
134
128
  # @return [Sawyer::Resource] Hash representing the dismissed review
135
129
  def dismiss_pull_request_review(repo, number, review, message, options = {})
136
130
  options = options.merge(message: message)
137
- options = ensure_api_media_type(:reviews, options)
138
131
  put "#{Repository.path repo}/pulls/#{number}/reviews/#{review}/dismissals", options
139
132
  end
140
133
 
@@ -149,8 +142,7 @@ module Octokit
149
142
  #
150
143
  # @return [Array<Sawyer::Resource>] Array of Hashes representing the review requests
151
144
  def pull_request_review_requests(repo, id, options = {})
152
- options = ensure_api_media_type(:reviews, options)
153
- get "#{Repository.path repo}/pulls/#{id}/requested_reviewers", options
145
+ paginate "#{Repository.path repo}/pulls/#{id}/requested_reviewers", options
154
146
  end
155
147
 
156
148
  # Create a review request
@@ -166,7 +158,6 @@ module Octokit
166
158
  # @return [Sawyer::Resource>] Hash respresenting the pull request
167
159
  def request_pull_request_review(repo, id, reviewers, options = {})
168
160
  options = options.merge(reviewers: reviewers)
169
- options = ensure_api_media_type(:reviews, options)
170
161
  post "#{Repository.path repo}/pulls/#{id}/requested_reviewers", options
171
162
  end
172
163
  end
@@ -103,6 +103,20 @@ module Octokit
103
103
  @response[:status]
104
104
  end
105
105
 
106
+ # Headers returned by the GitHub server.
107
+ #
108
+ # @return [Hash]
109
+ def response_headers
110
+ @response[:response_headers]
111
+ end
112
+
113
+ # Body returned by the GitHub server.
114
+ #
115
+ # @return [String]
116
+ def response_body
117
+ @response[:body]
118
+ end
119
+
106
120
  private
107
121
 
108
122
  def data
@@ -11,12 +11,13 @@ module Octokit
11
11
  :reactions => 'application/vnd.github.squirrel-girl-preview'.freeze,
12
12
  :repository_invitations => 'application/vnd.github.swamp-thing-preview+json'.freeze,
13
13
  :issue_timelines => 'application/vnd.github.mockingbird-preview+json'.freeze,
14
+ :nested_teams => 'application/vnd.github.hellcat-preview+json'.freeze,
14
15
  :pages => 'application/vnd.github.mister-fantastic-preview+json'.freeze,
15
16
  :projects => 'application/vnd.github.inertia-preview+json'.freeze,
16
17
  :traffic => 'application/vnd.github.spiderman-preview'.freeze,
17
- :org_membership => 'application/vnd.github.korra-preview'.freeze,
18
- :reviews => 'application/vnd.github.black-cat-preview'.freeze,
19
- :integrations => 'application/vnd.github.machine-man-preview+json'.freeze
18
+ :integrations => 'application/vnd.github.machine-man-preview+json'.freeze,
19
+ :marketplace => 'application/vnd.github.valkyrie-preview+json'.freeze,
20
+ :topics => 'application/vnd.github.mercy-preview+json'.freeze
20
21
  }
21
22
 
22
23
  def ensure_api_media_type(type, options)
@@ -28,13 +28,13 @@ module Octokit
28
28
  @owner = repo.owner
29
29
  @name = repo.name
30
30
  when Hash
31
- @name = repo[:repo] ||= repo[:name]
32
- @owner = repo[:owner] ||= repo[:user] ||= repo[:username]
31
+ @name = repo[:repo] || repo[:name]
32
+ @owner = repo[:owner] || repo[:user] || repo[:username]
33
33
  else
34
- raise_invalid_repository!
34
+ raise_invalid_repository!(repo)
35
35
  end
36
36
  if @owner && @name
37
- validate_owner_and_name!
37
+ validate_owner_and_name!(repo)
38
38
  end
39
39
  end
40
40
 
@@ -80,14 +80,16 @@ module Octokit
80
80
 
81
81
  private
82
82
 
83
- def validate_owner_and_name!
83
+ def validate_owner_and_name!(repo)
84
84
  if @owner.include?('/') || @name.include?('/') || !url.match(URI::ABS_URI)
85
- raise_invalid_repository!
85
+ raise_invalid_repository!(repo)
86
86
  end
87
87
  end
88
88
 
89
- def raise_invalid_repository!
90
- raise Octokit::InvalidRepository, "Invalid Repository. Use user/repo format."
89
+ def raise_invalid_repository!(repo)
90
+ msg = "#{repo.inspect} is invalid as a repository identifier. " +
91
+ "Use the repo/user (String) format, or the repository ID (Integer), or a hash containing :repo and :user keys."
92
+ raise Octokit::InvalidRepository, msg
91
93
  end
92
94
  end
93
95
  end
@@ -5,7 +5,7 @@ module Octokit
5
5
 
6
6
  # Current minor release.
7
7
  # @return [Integer]
8
- MINOR = 7
8
+ MINOR = 8
9
9
 
10
10
  # Current patch level.
11
11
  # @return [Integer]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octokit
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.7.0
4
+ version: 4.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wynn Netherland
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-04-05 00:00:00.000000000 Z
13
+ date: 2017-12-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -65,6 +65,7 @@ files:
65
65
  - lib/octokit/arguments.rb
66
66
  - lib/octokit/authentication.rb
67
67
  - lib/octokit/client.rb
68
+ - lib/octokit/client/apps.rb
68
69
  - lib/octokit/client/authorizations.rb
69
70
  - lib/octokit/client/commit_comments.rb
70
71
  - lib/octokit/client/commits.rb
@@ -77,12 +78,12 @@ files:
77
78
  - lib/octokit/client/gists.rb
78
79
  - lib/octokit/client/gitignore.rb
79
80
  - lib/octokit/client/hooks.rb
80
- - lib/octokit/client/integrations.rb
81
81
  - lib/octokit/client/issues.rb
82
82
  - lib/octokit/client/labels.rb
83
83
  - lib/octokit/client/legacy_search.rb
84
84
  - lib/octokit/client/licenses.rb
85
85
  - lib/octokit/client/markdown.rb
86
+ - lib/octokit/client/marketplace.rb
86
87
  - lib/octokit/client/meta.rb
87
88
  - lib/octokit/client/milestones.rb
88
89
  - lib/octokit/client/notifications.rb
@@ -152,9 +153,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
153
  version: 1.3.5
153
154
  requirements: []
154
155
  rubyforge_project:
155
- rubygems_version: 2.4.5.1
156
+ rubygems_version: 2.5.2
156
157
  signing_key:
157
158
  specification_version: 4
158
159
  summary: Ruby toolkit for working with the GitHub API
159
160
  test_files: []
160
- has_rdoc:
@@ -1,77 +0,0 @@
1
- module Octokit
2
- class Client
3
-
4
- # Methods for the Integrations API
5
- module Integrations
6
-
7
- # Find all installations that belong to an Integration
8
- #
9
- # @param options [Hash] An customizable set of options
10
- #
11
- # @see https://developer.github.com/v3/integrations/#find-installations
12
- #
13
- # @return [Array<Sawyer::Resource>] A list of installations
14
- def find_integration_installations(options = {})
15
- opts = ensure_api_media_type(:integrations, options)
16
- paginate "/integration/installations", opts
17
- end
18
- alias find_installations find_integration_installations
19
-
20
- # Create a new installation token
21
- #
22
- # @param installation [Integer] The id of a a GitHub Integration Installation
23
- # @param options [Hash] An customizable set of options
24
- #
25
- # @see https://developer.github.com/v3/integrations/#find-installations
26
- #
27
- # @return [<Sawyer::Resource>] An installation token
28
- def create_integration_installation_access_token(installation, options = {})
29
- opts = ensure_api_media_type(:integrations, options)
30
- post "/installations/#{installation}/access_tokens", opts
31
- end
32
- alias create_installation_access_token create_integration_installation_access_token
33
-
34
- # List repositories that are accessible to the authenticated installation
35
- #
36
- # @param options [Hash] An customizable set of options
37
- # @see https://developer.github.com/v3/integrations/installations/#list-repositories
38
- #
39
- # @return [Array<Sawyer::Resource>] A list of repositories
40
- def list_integration_installation_repositories(options = {})
41
- opts = ensure_api_media_type(:integrations, options)
42
- paginate "/installation/repositories", opts
43
- end
44
- alias list_installation_repos list_integration_installation_repositories
45
-
46
- # Add a single repository to an installation
47
- #
48
- # @param installation [Integer] The id of a a GitHub Integration Installation
49
- # @param repo [Integer] The id of the GitHub repository
50
- # @param options [Hash] An customizable set of options
51
- #
52
- # @see https://developer.github.com/v3/integrations/installations/#add-repository-to-installation
53
- #
54
- # @return [Boolean] Success
55
- def add_repository_to_integration_installation(installation, repo, options = {})
56
- opts = ensure_api_media_type(:integrations, options)
57
- boolean_from_response :put, "/installations/#{installation}/repositories/#{repo}", opts
58
- end
59
- alias add_repo_to_installation add_repository_to_integration_installation
60
-
61
- # Remove a single repository to an installation
62
- #
63
- # @param installation [Integer] The id of a a GitHub Integration Installation
64
- # @param repo [Integer] The id of the GitHub repository
65
- # @param options [Hash] An customizable set of options
66
- #
67
- # @see https://developer.github.com/v3/integrations/installations/#remove-repository-from-installation
68
- #
69
- # @return [Boolean] Success
70
- def remove_repository_from_integration_installation(installation, repo, options = {})
71
- opts = ensure_api_media_type(:integrations, options)
72
- boolean_from_response :delete, "/installations/#{installation}/repositories/#{repo}", opts
73
- end
74
- alias remove_repo_from_installation remove_repository_from_integration_installation
75
- end
76
- end
77
- end