octokit 4.6.0 → 4.21.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.
- checksums.yaml +5 -5
- data/CONTRIBUTING.md +14 -13
- data/LICENSE.md +1 -1
- data/README.md +141 -60
- data/lib/ext/sawyer/relation.rb +10 -0
- data/lib/octokit/authentication.rb +10 -11
- data/lib/octokit/client/actions_secrets.rb +58 -0
- data/lib/octokit/client/actions_workflow_runs.rb +105 -0
- data/lib/octokit/client/actions_workflows.rb +43 -0
- data/lib/octokit/client/apps.rb +222 -0
- data/lib/octokit/client/authorizations.rb +12 -74
- data/lib/octokit/client/checks.rb +191 -0
- data/lib/octokit/client/commit_branches.rb +20 -0
- data/lib/octokit/client/commit_pulls.rb +20 -0
- data/lib/octokit/client/community_profile.rb +22 -0
- data/lib/octokit/client/contents.rb +6 -0
- data/lib/octokit/client/deployments.rb +20 -0
- data/lib/octokit/client/events.rb +1 -0
- data/lib/octokit/client/gists.rb +3 -2
- data/lib/octokit/client/issues.rb +48 -1
- data/lib/octokit/client/labels.rb +7 -7
- data/lib/octokit/client/licenses.rb +1 -1
- data/lib/octokit/client/marketplace.rb +56 -0
- data/lib/octokit/client/notifications.rb +0 -4
- data/lib/octokit/client/oauth_applications.rb +122 -0
- data/lib/octokit/client/organizations.rb +149 -16
- data/lib/octokit/client/projects.rb +7 -7
- data/lib/octokit/client/pull_requests.rb +7 -5
- data/lib/octokit/client/rate_limit.rb +2 -2
- data/lib/octokit/client/refs.rb +19 -3
- data/lib/octokit/client/releases.rb +1 -0
- data/lib/octokit/client/repositories.rb +169 -8
- data/lib/octokit/client/repository_invitations.rb +1 -8
- data/lib/octokit/client/reviews.rb +227 -0
- data/lib/octokit/client/search.rb +24 -9
- data/lib/octokit/client/source_import.rb +1 -1
- data/lib/octokit/client/stats.rb +2 -0
- data/lib/octokit/client/statuses.rb +2 -2
- data/lib/octokit/client/users.rb +88 -1
- data/lib/octokit/client.rb +41 -9
- data/lib/octokit/configurable.rb +10 -2
- data/lib/octokit/connection.rb +19 -4
- data/lib/octokit/default.rb +17 -1
- data/lib/octokit/enterprise_admin_client/admin_stats.rb +1 -1
- data/lib/octokit/enterprise_admin_client/license.rb +1 -1
- data/lib/octokit/enterprise_admin_client/orgs.rb +2 -2
- data/lib/octokit/enterprise_admin_client/search_indexing.rb +1 -1
- data/lib/octokit/enterprise_admin_client/users.rb +12 -12
- data/lib/octokit/enterprise_management_console_client/management_console.rb +1 -1
- data/lib/octokit/enterprise_management_console_client.rb +1 -1
- data/lib/octokit/error.rb +74 -4
- data/lib/octokit/gist.rb +1 -1
- data/lib/octokit/middleware/follow_redirects.rb +2 -2
- data/lib/octokit/preview.rb +14 -3
- data/lib/octokit/rate_limit.rb +4 -4
- data/lib/octokit/repository.rb +10 -8
- data/lib/octokit/response/feed_parser.rb +0 -2
- data/lib/octokit/response/raise_error.rb +0 -2
- data/lib/octokit/version.rb +1 -1
- data/octokit.gemspec +2 -1
- metadata +39 -9
@@ -10,7 +10,7 @@ module Octokit
|
|
10
10
|
#
|
11
11
|
# @see https://developer.github.com/v3/repos/#get
|
12
12
|
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
13
|
-
# @return [
|
13
|
+
# @return [Boolean]
|
14
14
|
def repository?(repo, options = {})
|
15
15
|
!!repository(repo, options)
|
16
16
|
rescue Octokit::InvalidRepository
|
@@ -32,7 +32,7 @@ module Octokit
|
|
32
32
|
|
33
33
|
# Edit a repository
|
34
34
|
#
|
35
|
-
# @see https://developer.github.com/v3/repos/#
|
35
|
+
# @see https://developer.github.com/v3/repos/#update-a-repository
|
36
36
|
# @param repo [String, Hash, Repository] A GitHub repository
|
37
37
|
# @param options [Hash] Repository information to update
|
38
38
|
# @option options [String] :name Name of the repo
|
@@ -41,11 +41,15 @@ module Octokit
|
|
41
41
|
# @option options [String] :private `true` makes the repository private, and `false` makes it public.
|
42
42
|
# @option options [String] :has_issues `true` enables issues for this repo, `false` disables issues.
|
43
43
|
# @option options [String] :has_wiki `true` enables wiki for this repo, `false` disables wiki.
|
44
|
+
# @option options [Boolean] :is_template `true` makes the repository a template, `false` makes it not a template.
|
44
45
|
# @option options [String] :has_downloads `true` enables downloads for this repo, `false` disables downloads.
|
45
46
|
# @option options [String] :default_branch Update the default branch for this repository.
|
46
47
|
# @return [Sawyer::Resource] Repository information
|
47
48
|
def edit_repository(repo, options = {})
|
48
49
|
repo = Repository.new(repo)
|
50
|
+
if options.include? :is_template
|
51
|
+
options = ensure_api_media_type(:template_repositories, options)
|
52
|
+
end
|
49
53
|
options[:name] ||= repo.name
|
50
54
|
patch "repos/#{repo}", options
|
51
55
|
end
|
@@ -144,6 +148,7 @@ module Octokit
|
|
144
148
|
# @option options [String] :private `true` makes the repository private, and `false` makes it public.
|
145
149
|
# @option options [String] :has_issues `true` enables issues for this repo, `false` disables issues.
|
146
150
|
# @option options [String] :has_wiki `true` enables wiki for this repo, `false` disables wiki.
|
151
|
+
# @option options [Boolean] :is_template `true` makes this repo available as a template repository, `false` to prevent it.
|
147
152
|
# @option options [String] :has_downloads `true` enables downloads for this repo, `false` disables downloads.
|
148
153
|
# @option options [String] :organization Short name for the org under which to create the repo.
|
149
154
|
# @option options [Integer] :team_id The id of the team that will be granted access to this repository. This is only valid when creating a repo in an organization.
|
@@ -155,6 +160,9 @@ module Octokit
|
|
155
160
|
opts = options.dup
|
156
161
|
organization = opts.delete :organization
|
157
162
|
opts.merge! :name => name
|
163
|
+
if opts.include? :is_template
|
164
|
+
opts = ensure_api_media_type(:template_repositories, opts)
|
165
|
+
end
|
158
166
|
|
159
167
|
if organization.nil?
|
160
168
|
post 'user/repos', opts
|
@@ -177,6 +185,37 @@ module Octokit
|
|
177
185
|
end
|
178
186
|
alias :delete_repo :delete_repository
|
179
187
|
|
188
|
+
# Transfer repository
|
189
|
+
#
|
190
|
+
# Transfer a repository owned by your organization
|
191
|
+
#
|
192
|
+
# @see https://developer.github.com/v3/repos/#transfer-a-repository
|
193
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
194
|
+
# @param new_owner [String] The username or organization name the repository will be transferred to.
|
195
|
+
# @param options [Array<Integer>] :team_ids ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories.
|
196
|
+
# @return [Sawyer::Resource] Repository info for the transferred repository
|
197
|
+
def transfer_repository(repo, new_owner, options = {})
|
198
|
+
options = ensure_api_media_type(:transfer_repository, options)
|
199
|
+
post "#{Repository.path repo}/transfer", options.merge({ new_owner: new_owner })
|
200
|
+
end
|
201
|
+
alias :transfer_repo :transfer_repository
|
202
|
+
|
203
|
+
# Create a repository for a user or organization generated from a template repository
|
204
|
+
#
|
205
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub template repository
|
206
|
+
# @param name [String] Name of the new repo
|
207
|
+
# @option options [String] :owner Organization or user who the new repository will belong to.
|
208
|
+
# @option options [String] :description Description of the repo
|
209
|
+
# @option options [String] :private `true` makes the repository private, and `false` makes it public.
|
210
|
+
# @option options [Boolean] :include_all_branches `true` copies all branches from the template repository, `false` (default) makes it only copy the master branch.
|
211
|
+
# @return [Sawyer::Resource] Repository info for the new repository
|
212
|
+
def create_repository_from_template(repo, name, options = {})
|
213
|
+
options.merge! :name => name
|
214
|
+
options = ensure_api_media_type(:template_repositories, options)
|
215
|
+
post "#{Repository.path repo}/generate", options
|
216
|
+
end
|
217
|
+
alias :create_repo_from_template :create_repository_from_template
|
218
|
+
|
180
219
|
# Hide a public repository
|
181
220
|
#
|
182
221
|
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
@@ -277,6 +316,9 @@ module Octokit
|
|
277
316
|
# Requires authenticated client for private repos.
|
278
317
|
#
|
279
318
|
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
319
|
+
# @option options [String] :affiliation Filters the return array by affiliation.
|
320
|
+
# Can be one of: <tt>outside</tt>, <tt>direct</tt>, or <tt>all</tt>.
|
321
|
+
# If not specified, defaults to <tt>all</tt>
|
280
322
|
# @return [Array<Sawyer::Resource>] Array of hashes representing collaborating users.
|
281
323
|
# @see https://developer.github.com/v3/repos/collaborators/#list-collaborators
|
282
324
|
# @example
|
@@ -346,6 +388,18 @@ module Octokit
|
|
346
388
|
boolean_from_response :get, "#{Repository.path repo}/collaborators/#{collaborator}", options
|
347
389
|
end
|
348
390
|
|
391
|
+
# Get a user's permission level for a repo.
|
392
|
+
#
|
393
|
+
# Requires authenticated client
|
394
|
+
#
|
395
|
+
# @return [Sawyer::Resource] Hash representing the user's permission level for the given repository
|
396
|
+
# @see https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level
|
397
|
+
# @example
|
398
|
+
# @client.permission_level('octokit/octokit.rb', 'lizzhale')
|
399
|
+
def permission_level(repo, collaborator, options={})
|
400
|
+
get "#{Repository.path repo}/collaborators/#{collaborator}/permission", options
|
401
|
+
end
|
402
|
+
|
349
403
|
# List teams for a repo
|
350
404
|
#
|
351
405
|
# Requires authenticated client that is an owner or collaborator of the repo.
|
@@ -365,6 +419,39 @@ module Octokit
|
|
365
419
|
alias :repo_teams :repository_teams
|
366
420
|
alias :teams :repository_teams
|
367
421
|
|
422
|
+
# List all topics for a repository
|
423
|
+
#
|
424
|
+
# Requires authenticated client for private repos.
|
425
|
+
#
|
426
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
427
|
+
# @return [Sawyer::Resource] representing the topics for given repo
|
428
|
+
# @see https://developer.github.com/v3/repos/#list-all-topics-for-a-repository
|
429
|
+
# @example List topics for octokit/octokit.rb
|
430
|
+
# Octokit.topics('octokit/octokit.rb')
|
431
|
+
# @example List topics for octokit/octokit.rb
|
432
|
+
# client.topics('octokit/octokit.rb')
|
433
|
+
def topics(repo, options = {})
|
434
|
+
opts = ensure_api_media_type(:topics, options)
|
435
|
+
paginate "#{Repository.path repo}/topics", opts
|
436
|
+
end
|
437
|
+
|
438
|
+
# Replace all topics for a repository
|
439
|
+
#
|
440
|
+
# Requires authenticated client.
|
441
|
+
#
|
442
|
+
# @param repo [Integer, String, Repository, Hash] A Github repository
|
443
|
+
# @param names [Array] An array of topics to add to the repository.
|
444
|
+
# @return [Sawyer::Resource] representing the replaced topics for given repo
|
445
|
+
# @see https://developer.github.com/v3/repos/#replace-all-topics-for-a-repository
|
446
|
+
# @example Replace topics for octokit/octokit.rb
|
447
|
+
# client.replace_all_topics('octokit/octokit.rb', ['octocat', 'atom', 'electron', 'API'])
|
448
|
+
# @example Clear all topics for octokit/octokit.rb
|
449
|
+
# client.replace_all_topics('octokit/octokit.rb', [])
|
450
|
+
def replace_all_topics(repo, names, options = {})
|
451
|
+
opts = ensure_api_media_type(:topics, options)
|
452
|
+
put "#{Repository.path repo}/topics", opts.merge(:names => names)
|
453
|
+
end
|
454
|
+
|
368
455
|
# List contributors to a repo
|
369
456
|
#
|
370
457
|
# Requires authenticated client for private repos.
|
@@ -499,14 +586,14 @@ module Octokit
|
|
499
586
|
#
|
500
587
|
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
501
588
|
# @param branch [String] Branch name
|
502
|
-
# @option options [Hash] :required_status_checks If not null, the following keys are required:
|
503
|
-
# <tt>:
|
504
|
-
# <tt>:strict [boolean] Require branches to be up to date before merging.</tt>
|
505
|
-
# <tt>:contexts [Array] The list of status checks to require in order to merge into this branch</tt>
|
589
|
+
# @option options [Hash] :required_status_checks If not null, the following keys are required:
|
590
|
+
# <tt>:enforce_admins [boolean] Enforce required status checks for repository administrators.</tt>
|
591
|
+
# <tt>:strict [boolean] Require branches to be up to date before merging.</tt>
|
592
|
+
# <tt>:contexts [Array] The list of status checks to require in order to merge into this branch</tt>
|
506
593
|
#
|
507
594
|
# @option options [Hash] :restrictions If not null, the following keys are required:
|
508
|
-
# <tt>:users [Array] The list of user logins with push access</tt>
|
509
|
-
# <tt>:teams [Array] The list of team slugs with push access</tt>.
|
595
|
+
# <tt>:users [Array] The list of user logins with push access</tt>
|
596
|
+
# <tt>:teams [Array] The list of team slugs with push access</tt>.
|
510
597
|
#
|
511
598
|
# Teams and users restrictions are only available for organization-owned repositories.
|
512
599
|
# @return [Sawyer::Resource] The protected branch
|
@@ -553,6 +640,24 @@ module Octokit
|
|
553
640
|
boolean_from_response :delete, "#{Repository.path repo}/branches/#{branch}/protection", opts
|
554
641
|
end
|
555
642
|
|
643
|
+
# Rename a single branch from a repository
|
644
|
+
#
|
645
|
+
# Requires authenticated client
|
646
|
+
#
|
647
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
648
|
+
# @param branch [String] Current branch name
|
649
|
+
# @param new_name [String] New branch name
|
650
|
+
# @return [Sawyer::Resource] The renamed branch
|
651
|
+
# @see https://developer.github.com/v3/repos/#rename-a-branch
|
652
|
+
# @example
|
653
|
+
# @client.rename_branch('octokit/octokit.rb', 'master', 'main')
|
654
|
+
def rename_branch(repo, branch, new_name, options = {})
|
655
|
+
params = {
|
656
|
+
new_name: new_name,
|
657
|
+
}
|
658
|
+
post "#{Repository.path repo}/branches/#{branch}/rename", params.merge(options)
|
659
|
+
end
|
660
|
+
|
556
661
|
# List users available for assigning to issues.
|
557
662
|
#
|
558
663
|
# Requires authenticated client for private repos.
|
@@ -633,6 +738,62 @@ module Octokit
|
|
633
738
|
def delete_subscription(repo, options = {})
|
634
739
|
boolean_from_response :delete, "#{Repository.path repo}/subscription", options
|
635
740
|
end
|
741
|
+
|
742
|
+
# Create a repository dispatch event
|
743
|
+
#
|
744
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
745
|
+
# @param event_type [String] A custom webhook event name.
|
746
|
+
# @option options [Hash] :client_payload payload with extra information
|
747
|
+
# about the webhook event that your action or worklow may use.
|
748
|
+
#
|
749
|
+
# @return [Boolean] True if event was dispatched, false otherwise.
|
750
|
+
# @see https://developer.github.com/v3/repos/#create-a-repository-dispatch-event
|
751
|
+
def dispatch_event(repo, event_type, options = {})
|
752
|
+
boolean_from_response :post, "#{Repository.path repo}/dispatches", options.merge({ event_type: event_type })
|
753
|
+
end
|
754
|
+
|
755
|
+
# Check to see if vulnerability alerts are enabled for a repository
|
756
|
+
#
|
757
|
+
# The authenticated user must have admin access to the repository.
|
758
|
+
#
|
759
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
760
|
+
# @return [Boolean] True if vulnerability alerts are enabled, false otherwise.
|
761
|
+
# @see https://docs.github.com/en/rest/reference/repos#check-if-vulnerability-alerts-are-enabled-for-a-repository
|
762
|
+
#
|
763
|
+
# @example
|
764
|
+
# @client.vulnerability_alerts_enabled?("octokit/octokit.rb")
|
765
|
+
def vulnerability_alerts_enabled?(repo, options = {})
|
766
|
+
opts = ensure_api_media_type(:vulnerability_alerts, options)
|
767
|
+
boolean_from_response(:get, "#{Repository.path repo}/vulnerability-alerts", opts)
|
768
|
+
end
|
769
|
+
|
770
|
+
# Enable vulnerability alerts for a repository
|
771
|
+
#
|
772
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
773
|
+
# @param options [Hash]
|
774
|
+
#
|
775
|
+
# @return [Boolean] True if vulnerability alerts enabled, false otherwise.
|
776
|
+
# @see https://docs.github.com/en/rest/reference/repos#enable-vulnerability-alerts
|
777
|
+
# @example Enable vulnerability alerts for a repository
|
778
|
+
# @client.enable_vulnerability_alerts("octokit/octokit.rb")
|
779
|
+
def enable_vulnerability_alerts(repo, options = {})
|
780
|
+
opts = ensure_api_media_type(:vulnerability_alerts, options)
|
781
|
+
boolean_from_response(:put, "#{Repository.path repo}/vulnerability-alerts", opts)
|
782
|
+
end
|
783
|
+
|
784
|
+
# Disable vulnerability alerts for a repository
|
785
|
+
#
|
786
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
787
|
+
# @param options [Hash]
|
788
|
+
#
|
789
|
+
# @return [Boolean] True if vulnerability alerts disabled, false otherwise.
|
790
|
+
# @see https://docs.github.com/en/rest/reference/repos#disable-vulnerability-alerts
|
791
|
+
# @example Disable vulnerability alerts for a repository
|
792
|
+
# @client.disable_vulnerability_alerts("octokit/octokit.rb")
|
793
|
+
def disable_vulnerability_alerts(repo, options = {})
|
794
|
+
opts = ensure_api_media_type(:vulnerability_alerts, options)
|
795
|
+
boolean_from_response(:delete, "#{Repository.path repo}/vulnerability-alerts", opts)
|
796
|
+
end
|
636
797
|
end
|
637
798
|
end
|
638
799
|
end
|
@@ -13,9 +13,8 @@ module Octokit
|
|
13
13
|
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
14
14
|
# @param user [String] User GitHub username to add
|
15
15
|
# @return [Sawyer::Resource] The repository invitation
|
16
|
-
# @see https://developer.github.com/v3/repos/
|
16
|
+
# @see https://developer.github.com/v3/repos/collaborators/#add-user-as-a-collaborator
|
17
17
|
def invite_user_to_repository(repo, user, options = {})
|
18
|
-
options = ensure_api_media_type(:repository_invitations, options)
|
19
18
|
put "#{Repository.path repo}/collaborators/#{user}", options
|
20
19
|
end
|
21
20
|
alias invite_user_to_repo invite_user_to_repository
|
@@ -28,7 +27,6 @@ module Octokit
|
|
28
27
|
# @return [Array<Sawyer::Resource>] A list of invitations
|
29
28
|
# @see https://developer.github.com/v3/repos/invitations/#list-invitations-for-a-repository
|
30
29
|
def repository_invitations(repo, options = {})
|
31
|
-
options = ensure_api_media_type(:repository_invitations, options)
|
32
30
|
paginate "#{Repository.path repo}/invitations", options
|
33
31
|
end
|
34
32
|
alias repo_invitations repository_invitations
|
@@ -42,7 +40,6 @@ module Octokit
|
|
42
40
|
# @return [Boolean] True if the invitation was successfully deleted
|
43
41
|
# @see https://developer.github.com/v3/repos/invitations/#delete-a-repository-invitation
|
44
42
|
def delete_repository_invitation(repo, invitation_id, options = {})
|
45
|
-
options = ensure_api_media_type(:repository_invitations, options)
|
46
43
|
boolean_from_response :delete, "#{Repository.path repo}/invitations/#{invitation_id}", options
|
47
44
|
end
|
48
45
|
alias delete_repo_invitation delete_repository_invitation
|
@@ -56,7 +53,6 @@ module Octokit
|
|
56
53
|
# @return [Sawyer::Resource] The updated repository invitation
|
57
54
|
# @see https://developer.github.com/v3/repos/invitations/#update-a-repository-invitation
|
58
55
|
def update_repository_invitation(repo, invitation_id, options = {})
|
59
|
-
options = ensure_api_media_type(:repository_invitations, options)
|
60
56
|
patch "#{Repository.path repo}/invitations/#{invitation_id}", options
|
61
57
|
end
|
62
58
|
alias update_repo_invitation update_repository_invitation
|
@@ -68,7 +64,6 @@ module Octokit
|
|
68
64
|
# @return [Array<Sawyer::Resource>] The users repository invitations
|
69
65
|
# @see https://developer.github.com/v3/repos/invitations/#list-a-users-repository-invitations
|
70
66
|
def user_repository_invitations(options = {})
|
71
|
-
options = ensure_api_media_type(:repository_invitations, options)
|
72
67
|
paginate "/user/repository_invitations", options
|
73
68
|
end
|
74
69
|
alias user_repo_invitations user_repository_invitations
|
@@ -81,7 +76,6 @@ module Octokit
|
|
81
76
|
# @return [Boolean] True if the acceptance of the invitation was successful
|
82
77
|
# @see https://developer.github.com/v3/repos/invitations/#accept-a-repository-invitation
|
83
78
|
def accept_repository_invitation(invitation_id, options = {})
|
84
|
-
options = ensure_api_media_type(:repository_invitations, options)
|
85
79
|
patch "/user/repository_invitations/#{invitation_id}", options
|
86
80
|
end
|
87
81
|
alias accept_repo_invitation accept_repository_invitation
|
@@ -94,7 +88,6 @@ module Octokit
|
|
94
88
|
# @return [Boolean] True if the acceptance of the invitation was successful
|
95
89
|
# @see https://developer.github.com/v3/repos/invitations/#decline-a-repository-invitation
|
96
90
|
def decline_repository_invitation(invitation_id, options = {})
|
97
|
-
options = ensure_api_media_type(:repository_invitations, options)
|
98
91
|
boolean_from_response :delete, "/user/repository_invitations/#{invitation_id}", options
|
99
92
|
end
|
100
93
|
alias decline_invitation decline_repository_invitation
|
@@ -0,0 +1,227 @@
|
|
1
|
+
module Octokit
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Methods for the Reviews API
|
5
|
+
#
|
6
|
+
# @see https://developer.github.com/v3/pulls/reviews/
|
7
|
+
module Reviews
|
8
|
+
|
9
|
+
# List reviews on a pull request
|
10
|
+
#
|
11
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
12
|
+
# @param number [Integer] Number ID of the pull request
|
13
|
+
# @see https://developer.github.com/v3/pulls/reviews/#list-reviews-on-a-pull-request
|
14
|
+
#
|
15
|
+
# @example
|
16
|
+
# @client.pull_request_reviews('octokit/octokit.rb', 2)
|
17
|
+
#
|
18
|
+
# @return [Array<Sawyer::Resource>] Array of Hashes representing the reviews
|
19
|
+
def pull_request_reviews(repo, number, options = {})
|
20
|
+
paginate "#{Repository.path repo}/pulls/#{number}/reviews", options
|
21
|
+
end
|
22
|
+
|
23
|
+
# Get a single review
|
24
|
+
#
|
25
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
26
|
+
# @param number [Integer] Number ID of the pull request
|
27
|
+
# @param review [Integer] The id of the review
|
28
|
+
# @see https://developer.github.com/v3/pulls/reviews/#get-a-single-review
|
29
|
+
#
|
30
|
+
# @example
|
31
|
+
# @client.pull_request_review('octokit/octokit.rb', 825, 6505518)
|
32
|
+
#
|
33
|
+
# @return [Sawyer::Resource] Hash representing the review
|
34
|
+
def pull_request_review(repo, number, review, options = {})
|
35
|
+
get "#{Repository.path repo}/pulls/#{number}/reviews/#{review}", options
|
36
|
+
end
|
37
|
+
|
38
|
+
# Delete a pending review
|
39
|
+
#
|
40
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
41
|
+
# @param number [Integer] Number ID of the pull request
|
42
|
+
# @param review [Integer] The id of the review
|
43
|
+
# @see https://developer.github.com/v3/pulls/reviews/#delete-a-pending-review
|
44
|
+
#
|
45
|
+
# @example
|
46
|
+
# @client.delete_pull_request_review('octokit/octokit.rb', 825, 6505518)
|
47
|
+
#
|
48
|
+
# @return [Sawyer::Resource] Hash representing the deleted review
|
49
|
+
def delete_pull_request_review(repo, number, review, options = {})
|
50
|
+
delete "#{Repository.path repo}/pulls/#{number}/reviews/#{review}", options
|
51
|
+
end
|
52
|
+
|
53
|
+
# Get comments for a single review
|
54
|
+
#
|
55
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
56
|
+
# @param number [Integer] Number ID of the pull request
|
57
|
+
# @param review [Integer] The id of the review
|
58
|
+
# @see https://developer.github.com/v3/pulls/reviews/#get-comments-for-a-single-review
|
59
|
+
#
|
60
|
+
# @example
|
61
|
+
# @client.pull_request_review_comments('octokit/octokit.rb', 825, 6505518)
|
62
|
+
#
|
63
|
+
# @return [Array<Sawyer::Resource>] Array of Hashes representing the review comments
|
64
|
+
def pull_request_review_comments(repo, number, review, options = {})
|
65
|
+
paginate "#{Repository.path repo}/pulls/#{number}/reviews/#{review}/comments", options
|
66
|
+
end
|
67
|
+
|
68
|
+
# Create a pull request review
|
69
|
+
#
|
70
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
71
|
+
# @param number [Integer] Number ID of the pull request
|
72
|
+
# @param options [Hash] Method options
|
73
|
+
# @option options [String] :event The review action (event) to perform;
|
74
|
+
# can be one of APPROVE, REQUEST_CHANGES, or COMMENT.
|
75
|
+
# If left blank, the review is left PENDING.
|
76
|
+
# @option options [String] :body The body text of the pull request review
|
77
|
+
# @option options [Array<Hash>] :comments Comments part of the review
|
78
|
+
# @option comments [String] :path The path to the file being commented on
|
79
|
+
# @option comments [Integer] :position The position in the file to be commented on
|
80
|
+
# @option comments [String] :body Body of the comment
|
81
|
+
# @see https://developer.github.com/v3/pulls/reviews/#create-a-pull-request-review
|
82
|
+
#
|
83
|
+
# @example
|
84
|
+
# comments = [
|
85
|
+
# { path: '.travis.yml', position: 10, body: 'ruby-head is under development that is not stable.' },
|
86
|
+
# { path: '.travis.yml', position: 32, body: 'ruby-head is also required in thervm section.' },
|
87
|
+
# ]
|
88
|
+
# options = { event: 'REQUEST_CHANGES', comments: comments }
|
89
|
+
# @client.create_pull_request_review('octokit/octokit.rb', 844, options)
|
90
|
+
#
|
91
|
+
# @return [Sawyer::Resource>] Hash respresenting the review
|
92
|
+
def create_pull_request_review(repo, number, options = {})
|
93
|
+
post "#{Repository.path repo}/pulls/#{number}/reviews", options
|
94
|
+
end
|
95
|
+
|
96
|
+
# Submit a pull request review
|
97
|
+
#
|
98
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
99
|
+
# @param number [Integer] Number ID of the pull request
|
100
|
+
# @param review [Integer] The id of the review
|
101
|
+
# @param event [String] The review action (event) to perform; can be one of
|
102
|
+
# APPROVE, REQUEST_CHANGES, or COMMENT.
|
103
|
+
# @param options [Hash] Method options
|
104
|
+
# @option options [String] :body The body text of the pull request review
|
105
|
+
# @see https://developer.github.com/v3/pulls/reviews/#submit-a-pull-request-review
|
106
|
+
#
|
107
|
+
# @example
|
108
|
+
# @client.submit_pull_request_review('octokit/octokit.rb', 825, 6505518,
|
109
|
+
# 'APPROVE', body: 'LGTM!')
|
110
|
+
#
|
111
|
+
# @return [Sawyer::Resource] Hash respresenting the review
|
112
|
+
def submit_pull_request_review(repo, number, review, event, options = {})
|
113
|
+
options = options.merge(event: event)
|
114
|
+
post "#{Repository.path repo}/pulls/#{number}/reviews/#{review}/events", options
|
115
|
+
end
|
116
|
+
|
117
|
+
# Dismiss a pull request review
|
118
|
+
#
|
119
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
120
|
+
# @param number [Integer] Number ID of the pull request
|
121
|
+
# @param review [Integer] The id of the review
|
122
|
+
# @param message [String] The message for the pull request review dismissal
|
123
|
+
# @see https://developer.github.com/v3/pulls/reviews/#dismiss-a-pull-request-review
|
124
|
+
#
|
125
|
+
# @example
|
126
|
+
# @client.dismiss_pull_request_review('octokit/octokit.rb', 825, 6505518, 'The message.')
|
127
|
+
#
|
128
|
+
# @return [Sawyer::Resource] Hash representing the dismissed review
|
129
|
+
def dismiss_pull_request_review(repo, number, review, message, options = {})
|
130
|
+
options = options.merge(message: message)
|
131
|
+
put "#{Repository.path repo}/pulls/#{number}/reviews/#{review}/dismissals", options
|
132
|
+
end
|
133
|
+
|
134
|
+
# List review requests
|
135
|
+
#
|
136
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
137
|
+
# @param number [Integer] Number ID of the pull request
|
138
|
+
# @see https://developer.github.com/v3/pulls/review_requests/#list-review-requests
|
139
|
+
#
|
140
|
+
# @example
|
141
|
+
# @client.pull_request_review_requests('octokit/octokit.rb', 2)
|
142
|
+
#
|
143
|
+
# @return [Array<Sawyer::Resource>] Array of Hashes representing the review requests
|
144
|
+
def pull_request_review_requests(repo, number, options = {})
|
145
|
+
paginate "#{Repository.path repo}/pulls/#{number}/requested_reviewers", options
|
146
|
+
end
|
147
|
+
|
148
|
+
# Create a review request
|
149
|
+
#
|
150
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
151
|
+
# @param number [Integer] Number ID of the pull request
|
152
|
+
# @param reviewers [Hash] :reviewers [Array<String>] An array of user logins
|
153
|
+
# @param options [Hash] :team_reviewers [Array<String>] An array of team slugs
|
154
|
+
# @see https://developer.github.com/v3/pulls/review_requests/#create-a-review-request
|
155
|
+
#
|
156
|
+
# @example
|
157
|
+
# @client.request_pull_request_review('octokit/octokit.rb', 2, reviewers: ['soudy'])
|
158
|
+
#
|
159
|
+
# @return [Sawyer::Resource>] Hash respresenting the pull request
|
160
|
+
def request_pull_request_review(repo, number, reviewers = {}, options = {})
|
161
|
+
# TODO(5.0): remove deprecated behavior
|
162
|
+
if reviewers.is_a?(Array)
|
163
|
+
octokit_warn(
|
164
|
+
"Deprecated: Octokit::Client#request_pull_request_review "\
|
165
|
+
"no longer takes a separate :reviewers argument.\n" \
|
166
|
+
"Please update your call to pass :reviewers and :team_reviewers as part of the options hash."
|
167
|
+
)
|
168
|
+
options = options.merge(reviewers: reviewers)
|
169
|
+
else
|
170
|
+
options = options.merge(reviewers)
|
171
|
+
end
|
172
|
+
|
173
|
+
post "#{Repository.path repo}/pulls/#{number}/requested_reviewers", options
|
174
|
+
end
|
175
|
+
|
176
|
+
# Delete a review request
|
177
|
+
#
|
178
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
179
|
+
# @param id [Integer] The id of the pull request
|
180
|
+
# @param reviewers [Hash] :reviewers [Array] An array of user logins
|
181
|
+
# @param options [Hash] :team_reviewers [Array] An array of team slugs
|
182
|
+
#
|
183
|
+
# @see https://developer.github.com/v3/pulls/review_requests/#delete-a-review-request
|
184
|
+
#
|
185
|
+
# @example
|
186
|
+
# options = {
|
187
|
+
# "reviewers" => [ "octocat", "hubot", "other_user" ],
|
188
|
+
# "team_reviewers" => [ "justice-league" ]
|
189
|
+
# }
|
190
|
+
# @client.delete_pull_request_review_request('octokit/octokit.rb', 2, options)
|
191
|
+
#
|
192
|
+
# @return [Sawyer::Resource>] Hash representing the pull request
|
193
|
+
def delete_pull_request_review_request(repo, id, reviewers={}, options = {})
|
194
|
+
# TODO(5.0): remove deprecated behavior
|
195
|
+
if !reviewers.empty? && !options.empty?
|
196
|
+
octokit_warn(
|
197
|
+
"Deprecated: Octokit::Client#delete_pull_request_review_request "\
|
198
|
+
"no longer takes a separate :reviewers argument.\n" \
|
199
|
+
"Please update your call to pass :reviewers and :team_reviewers as part of the options hash."
|
200
|
+
)
|
201
|
+
end
|
202
|
+
# For backwards compatibility, this endpoint can be called with a separate reviewers hash.
|
203
|
+
# If not called with a separate hash, then 'reviewers' is, in fact, 'options'.
|
204
|
+
options = options.merge(reviewers)
|
205
|
+
delete "#{Repository.path repo}/pulls/#{id}/requested_reviewers", options
|
206
|
+
end
|
207
|
+
|
208
|
+
# Update a review request comment
|
209
|
+
#
|
210
|
+
# @param repo [Integer, String, Hash, Repository] A GitHub repository
|
211
|
+
# @param number [Integer] Number ID of the pull request
|
212
|
+
# @param review [Integer] The id of the review
|
213
|
+
# @param body [String] body text of the pull request review.
|
214
|
+
# @param options [Hash] Method options
|
215
|
+
# @see https://developer.github.com/v3/pulls/reviews/#update-a-pull-request-review
|
216
|
+
#
|
217
|
+
# @example
|
218
|
+
# @client.update_pull_request_review('octokit/octokit.rb', 825, 6505518, 'This is close to perfect! Please address the suggested inline change. And add more about this.')
|
219
|
+
#
|
220
|
+
# @return [Sawyer::Resource] Hash representing the review comment
|
221
|
+
def update_pull_request_review(repo, number, review, body, options = {})
|
222
|
+
options[:body] = body
|
223
|
+
put "#{Repository.path repo}/pulls/#{number}/reviews/#{review}", options
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
@@ -12,24 +12,39 @@ module Octokit
|
|
12
12
|
# @param options [Hash] Sort and pagination options
|
13
13
|
# @option options [String] :sort Sort field
|
14
14
|
# @option options [String] :order Sort order (asc or desc)
|
15
|
-
# @option options [
|
16
|
-
# @option options [
|
15
|
+
# @option options [Integer] :page Page of paginated results
|
16
|
+
# @option options [Integer] :per_page Number of items per page
|
17
17
|
# @return [Sawyer::Resource] Search results object
|
18
18
|
# @see https://developer.github.com/v3/search/#search-code
|
19
19
|
def search_code(query, options = {})
|
20
20
|
search "search/code", query, options
|
21
21
|
end
|
22
22
|
|
23
|
+
# Search commits
|
24
|
+
#
|
25
|
+
# @param query [String] Search terms and qualifiers
|
26
|
+
# @param options [Hash] Sort and pagination options
|
27
|
+
# @option options [String] :sort Sort field
|
28
|
+
# @option options [String] :order Sort order (asc or desc)
|
29
|
+
# @option options [Integer] :page Page of paginated results
|
30
|
+
# @option options [Integer] :per_page Number of items per page
|
31
|
+
# @return [Sawyer::Resource] Search results object
|
32
|
+
# @see https://developer.github.com/v3/search/#search-commits
|
33
|
+
def search_commits(query, options = {})
|
34
|
+
options = ensure_api_media_type(:commit_search, options)
|
35
|
+
search "search/commits", query, options
|
36
|
+
end
|
37
|
+
|
23
38
|
# Search issues
|
24
39
|
#
|
25
40
|
# @param query [String] Search term and qualifiers
|
26
41
|
# @param options [Hash] Sort and pagination options
|
27
42
|
# @option options [String] :sort Sort field
|
28
43
|
# @option options [String] :order Sort order (asc or desc)
|
29
|
-
# @option options [
|
30
|
-
# @option options [
|
44
|
+
# @option options [Integer] :page Page of paginated results
|
45
|
+
# @option options [Integer] :per_page Number of items per page
|
31
46
|
# @return [Sawyer::Resource] Search results object
|
32
|
-
# @see https://developer.github.com/v3/search/#search-issues
|
47
|
+
# @see https://developer.github.com/v3/search/#search-issues-and-pull-requests
|
33
48
|
def search_issues(query, options = {})
|
34
49
|
search "search/issues", query, options
|
35
50
|
end
|
@@ -40,8 +55,8 @@ module Octokit
|
|
40
55
|
# @param options [Hash] Sort and pagination options
|
41
56
|
# @option options [String] :sort Sort field
|
42
57
|
# @option options [String] :order Sort order (asc or desc)
|
43
|
-
# @option options [
|
44
|
-
# @option options [
|
58
|
+
# @option options [Integer] :page Page of paginated results
|
59
|
+
# @option options [Integer] :per_page Number of items per page
|
45
60
|
# @return [Sawyer::Resource] Search results object
|
46
61
|
# @see https://developer.github.com/v3/search/#search-repositories
|
47
62
|
def search_repositories(query, options = {})
|
@@ -55,8 +70,8 @@ module Octokit
|
|
55
70
|
# @param options [Hash] Sort and pagination options
|
56
71
|
# @option options [String] :sort Sort field
|
57
72
|
# @option options [String] :order Sort order (asc or desc)
|
58
|
-
# @option options [
|
59
|
-
# @option options [
|
73
|
+
# @option options [Integer] :page Page of paginated results
|
74
|
+
# @option options [Integer] :per_page Number of items per page
|
60
75
|
# @return [Sawyer::Resource] Search results object
|
61
76
|
# @see https://developer.github.com/v3/search/#search-users
|
62
77
|
def search_users(query, options = {})
|
@@ -132,7 +132,7 @@ module Octokit
|
|
132
132
|
#
|
133
133
|
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
134
134
|
# @param options [Hash]
|
135
|
-
# @option options [
|
135
|
+
# @option options [Integer] :page Page of paginated results
|
136
136
|
# @return [Array<Sawyer::Resource>] Array of hashes representing files over 100MB.
|
137
137
|
# @see https://developer.github.com/v3/migration/source_imports/#get-large-files
|
138
138
|
#
|
data/lib/octokit/client/stats.rb
CHANGED
@@ -88,6 +88,7 @@ module Octokit
|
|
88
88
|
# @return [Array<Sawyer::Resource> or nil] Stats in metric-specific format, or nil if not yet calculated.
|
89
89
|
# @see https://developer.github.com/v3/repos/statistics/
|
90
90
|
def get_stats(repo, metric, options = {})
|
91
|
+
options = options.dup
|
91
92
|
if retry_timeout = options.delete(:retry_timeout)
|
92
93
|
retry_wait = options.delete(:retry_wait) || 0.5
|
93
94
|
timeout = Time.now + retry_timeout
|
@@ -95,6 +96,7 @@ module Octokit
|
|
95
96
|
loop do
|
96
97
|
data = get("#{Repository.path repo}/stats/#{metric}", options)
|
97
98
|
return data if last_response.status == 200
|
99
|
+
return [] if last_response.status == 204
|
98
100
|
return nil unless retry_timeout
|
99
101
|
return nil if Time.now >= timeout
|
100
102
|
sleep retry_wait if retry_wait
|
@@ -13,7 +13,7 @@ module Octokit
|
|
13
13
|
# @return [Array<Sawyer::Resource>] A list of statuses
|
14
14
|
# @see https://developer.github.com/v3/repos/statuses/#list-statuses-for-a-specific-ref
|
15
15
|
def statuses(repo, sha, options = {})
|
16
|
-
|
16
|
+
paginate "#{Repository.path repo}/statuses/#{sha}", options
|
17
17
|
end
|
18
18
|
alias :list_statuses :statuses
|
19
19
|
|
@@ -39,7 +39,7 @@ module Octokit
|
|
39
39
|
# @return [Sawyer::Resource] A status
|
40
40
|
# @see https://developer.github.com/v3/repos/statuses/#create-a-status
|
41
41
|
def create_status(repo, sha, state, options = {})
|
42
|
-
options.merge
|
42
|
+
options = options.merge(:state => state)
|
43
43
|
post "#{Repository.path repo}/statuses/#{sha}", options
|
44
44
|
end
|
45
45
|
end
|