octokit 4.21.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +120 -96
- data/Rakefile +20 -14
- data/lib/ext/sawyer/relation.rb +4 -2
- data/lib/octokit/arguments.rb +3 -3
- data/lib/octokit/authentication.rb +10 -3
- data/lib/octokit/client/actions_artifacts.rb +71 -0
- data/lib/octokit/client/actions_secrets.rb +111 -8
- data/lib/octokit/client/actions_workflow_jobs.rb +65 -0
- data/lib/octokit/client/actions_workflow_runs.rb +23 -3
- data/lib/octokit/client/actions_workflows.rb +27 -2
- data/lib/octokit/client/apps.rb +63 -74
- data/lib/octokit/client/checks.rb +18 -9
- data/lib/octokit/client/code_scanning.rb +190 -0
- data/lib/octokit/client/codespaces_secrets.rb +108 -0
- data/lib/octokit/client/commit_branches.rb +2 -2
- data/lib/octokit/client/commit_comments.rb +8 -8
- data/lib/octokit/client/commit_pulls.rb +2 -2
- data/lib/octokit/client/commits.rb +31 -34
- data/lib/octokit/client/community_profile.rb +2 -3
- data/lib/octokit/client/contents.rb +19 -22
- data/lib/octokit/client/dependabot_secrets.rb +108 -0
- data/lib/octokit/client/deployments.rb +8 -8
- data/lib/octokit/client/downloads.rb +5 -6
- data/lib/octokit/client/emojis.rb +3 -3
- data/lib/octokit/client/environments.rb +58 -0
- data/lib/octokit/client/events.rb +4 -5
- data/lib/octokit/client/feeds.rb +4 -5
- data/lib/octokit/client/gists.rb +6 -6
- data/lib/octokit/client/gitignore.rb +3 -3
- data/lib/octokit/client/hooks.rb +9 -19
- data/lib/octokit/client/issues.rb +14 -15
- data/lib/octokit/client/labels.rb +10 -10
- data/lib/octokit/client/legacy_search.rb +3 -3
- data/lib/octokit/client/licenses.rb +3 -6
- data/lib/octokit/client/markdown.rb +3 -3
- data/lib/octokit/client/marketplace.rb +4 -4
- data/lib/octokit/client/meta.rb +4 -5
- data/lib/octokit/client/milestones.rb +5 -5
- data/lib/octokit/client/notifications.rb +6 -6
- data/lib/octokit/client/oauth_applications.rb +1 -7
- data/lib/octokit/client/objects.rb +14 -14
- data/lib/octokit/client/organizations.rb +106 -62
- data/lib/octokit/client/pages.rb +5 -7
- data/lib/octokit/client/projects.rb +44 -64
- data/lib/octokit/client/pull_requests.rb +66 -45
- data/lib/octokit/client/rate_limit.rb +9 -11
- data/lib/octokit/client/reactions.rb +78 -16
- data/lib/octokit/client/refs.rb +15 -18
- data/lib/octokit/client/releases.rb +13 -13
- data/lib/octokit/client/repositories.rb +92 -69
- data/lib/octokit/client/repository_invitations.rb +3 -3
- data/lib/octokit/client/reviews.rb +8 -8
- data/lib/octokit/client/say.rb +4 -5
- data/lib/octokit/client/search.rb +24 -10
- data/lib/octokit/client/service_status.rb +19 -9
- data/lib/octokit/client/source_import.rb +7 -12
- data/lib/octokit/client/stats.rb +10 -9
- data/lib/octokit/client/statuses.rb +5 -5
- data/lib/octokit/client/tokens.rb +31 -0
- data/lib/octokit/client/traffic.rb +6 -11
- data/lib/octokit/client/users.rb +54 -33
- data/lib/octokit/client.rb +44 -20
- data/lib/octokit/configurable.rb +51 -31
- data/lib/octokit/connection.rb +33 -24
- data/lib/octokit/default.rb +66 -35
- data/lib/octokit/enterprise_admin_client/admin_stats.rb +13 -14
- data/lib/octokit/enterprise_admin_client/license.rb +3 -4
- data/lib/octokit/enterprise_admin_client/orgs.rb +3 -4
- data/lib/octokit/enterprise_admin_client/search_indexing.rb +7 -8
- data/lib/octokit/enterprise_admin_client/users.rb +5 -4
- data/lib/octokit/enterprise_admin_client.rb +9 -3
- data/lib/octokit/enterprise_management_console_client/management_console.rb +51 -33
- data/lib/octokit/enterprise_management_console_client.rb +8 -2
- data/lib/octokit/error.rb +53 -34
- data/lib/octokit/gist.rb +3 -4
- data/lib/octokit/manage_ghes_client/manage_ghes.rb +178 -0
- data/lib/octokit/manage_ghes_client.rb +64 -0
- data/lib/octokit/middleware/follow_redirects.rb +16 -12
- data/lib/octokit/organization.rb +3 -1
- data/lib/octokit/rate_limit.rb +8 -6
- data/lib/octokit/repo_arguments.rb +3 -4
- data/lib/octokit/repository.rb +32 -25
- data/lib/octokit/response/base_middleware.rb +10 -0
- data/lib/octokit/response/feed_parser.rb +5 -7
- data/lib/octokit/response/raise_error.rb +4 -4
- data/lib/octokit/user.rb +4 -2
- data/lib/octokit/version.rb +4 -2
- data/lib/octokit/warnable.rb +4 -5
- data/lib/octokit.rb +30 -8
- data/octokit.gemspec +12 -11
- metadata +22 -34
- data/lib/octokit/client/authorizations.rb +0 -182
- data/lib/octokit/client/pub_sub_hubbub.rb +0 -111
- data/lib/octokit/preview.rb +0 -46
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'octokit/configurable'
|
4
|
+
require 'octokit/connection'
|
5
|
+
require 'octokit/warnable'
|
6
|
+
require 'octokit/manage_ghes_client/manage_ghes'
|
7
|
+
|
8
|
+
module Octokit
|
9
|
+
# ManageGHESClient is only meant to be used by GitHub Enterprise Server (GHES) operators
|
10
|
+
# and provides access to the Manage GHES API endpoints.
|
11
|
+
#
|
12
|
+
# @see Octokit::Client Use Octokit::Client for regular API use for GitHub
|
13
|
+
# and GitHub Enterprise.
|
14
|
+
# @see https://developer.github.com/v3/enterprise-admin/manage-ghes/
|
15
|
+
class ManageGHESClient
|
16
|
+
include Octokit::Configurable
|
17
|
+
include Octokit::Connection
|
18
|
+
include Octokit::Warnable
|
19
|
+
include Octokit::ManageGHESClient::ManageAPI
|
20
|
+
|
21
|
+
def initialize(options = {})
|
22
|
+
# Use options passed in, but fall back to module defaults
|
23
|
+
# rubocop:disable Style/HashEachMethods
|
24
|
+
#
|
25
|
+
# This may look like a `.keys.each` which should be replaced with `#each_key`, but
|
26
|
+
# this doesn't actually work, since `#keys` is just a method we've defined ourselves.
|
27
|
+
# The class doesn't fulfill the whole `Enumerable` contract.
|
28
|
+
Octokit::Configurable.keys.each do |key|
|
29
|
+
# rubocop:enable Style/HashEachMethods
|
30
|
+
instance_variable_set(:"@#{key}", options[key] || Octokit.instance_variable_get(:"@#{key}"))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
def endpoint
|
37
|
+
manage_ghes_endpoint
|
38
|
+
end
|
39
|
+
|
40
|
+
# Set Manage GHES API endpoint
|
41
|
+
#
|
42
|
+
# @param value [String] Manage GHES API endpoint
|
43
|
+
def manage_ghes_endpoint=(value)
|
44
|
+
reset_agent
|
45
|
+
@manage_ghes_endpoint = value
|
46
|
+
end
|
47
|
+
|
48
|
+
# Set Manage GHES API username
|
49
|
+
#
|
50
|
+
# @param value [String] Manage GHES API username
|
51
|
+
def manage_ghes_username=(value)
|
52
|
+
reset_agent
|
53
|
+
@manage_ghes_username = value
|
54
|
+
end
|
55
|
+
|
56
|
+
# Set Manage GHES API password
|
57
|
+
#
|
58
|
+
# @param value [String] Manage GHES API password
|
59
|
+
def manage_ghes_password=(value)
|
60
|
+
reset_agent
|
61
|
+
@manage_ghes_password = value
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'faraday'
|
2
4
|
require 'set'
|
3
5
|
|
@@ -7,15 +9,13 @@ require 'set'
|
|
7
9
|
# https://github.com/lostisland/faraday_middleware/blob/138766e/lib/faraday_middleware/response/follow_redirects.rb
|
8
10
|
|
9
11
|
module Octokit
|
10
|
-
|
11
12
|
module Middleware
|
12
|
-
|
13
13
|
# Public: Exception thrown when the maximum amount of requests is exceeded.
|
14
14
|
class RedirectLimitReached < Faraday::ClientError
|
15
15
|
attr_reader :response
|
16
16
|
|
17
17
|
def initialize(response)
|
18
|
-
super
|
18
|
+
super("too many redirects; last one to: #{response['location']}")
|
19
19
|
@response = response
|
20
20
|
end
|
21
21
|
end
|
@@ -30,13 +30,13 @@ module Octokit
|
|
30
30
|
# doesn't support parallelism.
|
31
31
|
class FollowRedirects < Faraday::Middleware
|
32
32
|
# HTTP methods for which 30x redirects can be followed
|
33
|
-
ALLOWED_METHODS = Set.new [
|
33
|
+
ALLOWED_METHODS = Set.new %i[head options get post put patch delete]
|
34
34
|
|
35
35
|
# HTTP redirect status codes that this middleware implements
|
36
36
|
REDIRECT_CODES = Set.new [301, 302, 303, 307]
|
37
37
|
|
38
38
|
# Keys in env hash which will get cleared between requests
|
39
|
-
ENV_TO_CLEAR = Set.new [
|
39
|
+
ENV_TO_CLEAR = Set.new %i[status response response_headers]
|
40
40
|
|
41
41
|
# Default value for max redirects followed
|
42
42
|
FOLLOW_LIMIT = 3
|
@@ -44,7 +44,7 @@ module Octokit
|
|
44
44
|
# Regex that matches characters that need to be escaped in URLs, sans
|
45
45
|
# the "%" character which we assume already represents an escaped
|
46
46
|
# sequence.
|
47
|
-
URI_UNSAFE =
|
47
|
+
URI_UNSAFE = %r{[^\-_.!~*'()a-zA-Z\d;/?:@&=+$,\[\]%]}.freeze
|
48
48
|
|
49
49
|
# Public: Initialize the middleware.
|
50
50
|
#
|
@@ -64,7 +64,7 @@ module Octokit
|
|
64
64
|
private
|
65
65
|
|
66
66
|
def convert_to_get?(response)
|
67
|
-
|
67
|
+
!%i[head options].include?(response.env[:method]) &&
|
68
68
|
@convert_to_get.include?(response.status)
|
69
69
|
end
|
70
70
|
|
@@ -75,6 +75,7 @@ module Octokit
|
|
75
75
|
response.on_complete do |response_env|
|
76
76
|
if follow_redirect?(response_env, response)
|
77
77
|
raise(RedirectLimitReached, response) if follows.zero?
|
78
|
+
|
78
79
|
new_request_env = update_env(response_env, request_body, response)
|
79
80
|
response = perform_with_redirection(new_request_env, follows - 1)
|
80
81
|
end
|
@@ -84,9 +85,12 @@ module Octokit
|
|
84
85
|
|
85
86
|
def update_env(env, request_body, response)
|
86
87
|
original_url = env[:url]
|
87
|
-
env[:url] += safe_escape(response[
|
88
|
+
env[:url] += safe_escape(response['location'])
|
88
89
|
unless same_host?(original_url, env[:url])
|
89
|
-
|
90
|
+
# HACK: Faraday’s Authorization middlewares don’t touch the request if the `Authorization` header is set.
|
91
|
+
# This is a workaround to drop authentication info.
|
92
|
+
# See https://github.com/octokit/octokit.rb/pull/1359#issuecomment-925609697
|
93
|
+
env[:request_headers]['Authorization'] = 'dummy'
|
90
94
|
end
|
91
95
|
|
92
96
|
if convert_to_get?(response)
|
@@ -122,9 +126,9 @@ module Octokit
|
|
122
126
|
# URI:HTTP using the `+` operator. Doesn't escape "%" characters so to not
|
123
127
|
# risk double-escaping.
|
124
128
|
def safe_escape(uri)
|
125
|
-
uri.to_s.gsub(URI_UNSAFE)
|
126
|
-
"
|
127
|
-
|
129
|
+
uri.to_s.gsub(URI_UNSAFE) do |match|
|
130
|
+
"%#{match.unpack('H2' * match.bytesize).join('%').upcase}"
|
131
|
+
end
|
128
132
|
end
|
129
133
|
end
|
130
134
|
end
|
data/lib/octokit/organization.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Octokit
|
2
4
|
# GitHub organization class to generate API path urls
|
3
5
|
class Organization
|
@@ -5,7 +7,7 @@ module Octokit
|
|
5
7
|
#
|
6
8
|
# @param org [String, Integer] GitHub organization login or id
|
7
9
|
# @return [String] Organization Api path
|
8
|
-
def self.path
|
10
|
+
def self.path(org)
|
9
11
|
case org
|
10
12
|
when String
|
11
13
|
"orgs/#{org}"
|
data/lib/octokit/rate_limit.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Octokit
|
3
4
|
# Class for API Rate Limit info
|
4
5
|
#
|
5
6
|
# @!attribute [w] limit
|
@@ -13,17 +14,18 @@ module Octokit
|
|
13
14
|
#
|
14
15
|
# @see https://developer.github.com/v3/#rate-limiting
|
15
16
|
class RateLimit < Struct.new(:limit, :remaining, :resets_at, :resets_in)
|
16
|
-
|
17
17
|
# Get rate limit info from HTTP response
|
18
18
|
#
|
19
19
|
# @param response [#headers] HTTP response
|
20
20
|
# @return [RateLimit]
|
21
21
|
def self.from_response(response)
|
22
22
|
info = new
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
info.
|
23
|
+
headers = response.headers if response.respond_to?(:headers) && !response.headers.nil?
|
24
|
+
headers ||= response.response_headers if response.respond_to?(:response_headers) && !response.response_headers.nil?
|
25
|
+
if headers
|
26
|
+
info.limit = (headers['X-RateLimit-Limit'] || 1).to_i
|
27
|
+
info.remaining = (headers['X-RateLimit-Remaining'] || 1).to_i
|
28
|
+
info.resets_at = Time.at((headers['X-RateLimit-Reset'] || Time.now).to_i)
|
27
29
|
info.resets_in = [(info.resets_at - Time.now).to_i, 0].max
|
28
30
|
end
|
29
31
|
|
@@ -1,19 +1,18 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Octokit
|
3
4
|
# Class to extract options from Ruby arguments for
|
4
5
|
# Repository-related methods
|
5
6
|
class RepoArguments < Arguments
|
6
|
-
|
7
7
|
# !@attribute [r] repo
|
8
8
|
# @return [Repository]
|
9
9
|
attr_reader :repo
|
10
10
|
|
11
11
|
def initialize(args)
|
12
|
-
arguments = super
|
12
|
+
arguments = super
|
13
13
|
@repo = arguments.shift
|
14
14
|
|
15
15
|
arguments
|
16
16
|
end
|
17
|
-
|
18
17
|
end
|
19
18
|
end
|
data/lib/octokit/repository.rb
CHANGED
@@ -1,19 +1,21 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Octokit
|
3
4
|
# Class to parse GitHub repository owner and name from
|
4
5
|
# URLs and to generate URLs
|
5
6
|
class Repository
|
6
7
|
attr_accessor :owner, :name, :id
|
7
|
-
|
8
|
+
|
9
|
+
NAME_WITH_OWNER_PATTERN = %r{\A[\w.-]+/[\w.-]+\z}i.freeze
|
8
10
|
|
9
11
|
# Instantiate from a GitHub repository URL
|
10
12
|
#
|
11
13
|
# @return [Repository]
|
12
14
|
def self.from_url(url)
|
13
|
-
new URI.parse(url).path[1
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
new URI.parse(url).path[1..]
|
16
|
+
.gsub(%r{^repos/}, '')
|
17
|
+
.split('/', 3)[0..1]
|
18
|
+
.join('/')
|
17
19
|
end
|
18
20
|
|
19
21
|
# @raise [Octokit::InvalidRepository] if the repository
|
@@ -23,7 +25,7 @@ module Octokit
|
|
23
25
|
when Integer
|
24
26
|
@id = repo
|
25
27
|
when NAME_WITH_OWNER_PATTERN
|
26
|
-
@owner, @name = repo.split(
|
28
|
+
@owner, @name = repo.split('/')
|
27
29
|
when Repository
|
28
30
|
@owner = repo.owner
|
29
31
|
@name = repo.name
|
@@ -33,9 +35,7 @@ module Octokit
|
|
33
35
|
else
|
34
36
|
raise_invalid_repository!(repo)
|
35
37
|
end
|
36
|
-
if @owner && @name
|
37
|
-
validate_owner_and_name!(repo)
|
38
|
-
end
|
38
|
+
validate_owner_and_name!(repo) if @owner && @name
|
39
39
|
end
|
40
40
|
|
41
41
|
# Repository owner/name
|
@@ -43,18 +43,19 @@ module Octokit
|
|
43
43
|
def slug
|
44
44
|
"#{@owner}/#{@name}"
|
45
45
|
end
|
46
|
-
alias
|
46
|
+
alias to_s slug
|
47
47
|
|
48
48
|
# @return [String] Repository API path
|
49
49
|
def path
|
50
50
|
return named_api_path if @owner && @name
|
51
|
-
|
51
|
+
|
52
|
+
id_api_path if @id
|
52
53
|
end
|
53
54
|
|
54
55
|
# Get the api path for a repo
|
55
56
|
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
56
57
|
# @return [String] Api path.
|
57
|
-
def self.path
|
58
|
+
def self.path(repo)
|
58
59
|
new(repo).path
|
59
60
|
end
|
60
61
|
|
@@ -74,22 +75,28 @@ module Octokit
|
|
74
75
|
"#{Octokit.web_endpoint}#{slug}"
|
75
76
|
end
|
76
77
|
|
77
|
-
alias
|
78
|
-
alias
|
79
|
-
alias
|
78
|
+
alias user owner
|
79
|
+
alias username owner
|
80
|
+
alias repo name
|
80
81
|
|
81
82
|
private
|
82
83
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
84
|
+
ABS_URI_REGEXP = if URI.const_defined?(:RFC2396_PARSER) # Ruby 3.4+
|
85
|
+
URI::RFC2396_PARSER.regexp.fetch(:ABS_URI)
|
86
|
+
else
|
87
|
+
URI::RFC2396_Parser.new.regexp.fetch(:ABS_URI)
|
88
|
+
end
|
88
89
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
raise Octokit::InvalidRepository, msg
|
90
|
+
def validate_owner_and_name!(repo)
|
91
|
+
if @owner.include?('/') || @name.include?('/') || !url.match?(ABS_URI_REGEXP)
|
92
|
+
raise_invalid_repository!(repo)
|
93
93
|
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def raise_invalid_repository!(repo)
|
97
|
+
msg = "#{repo.inspect} is invalid as a repository identifier. " \
|
98
|
+
'Use the user/repo (String) format, or the repository ID (Integer), or a hash containing :repo and :user keys.'
|
99
|
+
raise Octokit::InvalidRepository, msg
|
100
|
+
end
|
94
101
|
end
|
95
102
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'faraday'
|
4
|
+
|
5
|
+
module Octokit
|
6
|
+
module Response
|
7
|
+
# In Faraday 2.x, Faraday::Response::Middleware was removed
|
8
|
+
BaseMiddleware = defined?(Faraday::Response::Middleware) ? Faraday::Response::Middleware : Faraday::Middleware
|
9
|
+
end
|
10
|
+
end
|
@@ -1,19 +1,17 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require 'octokit/response/base_middleware'
|
4
4
|
|
5
|
+
module Octokit
|
5
6
|
module Response
|
6
|
-
|
7
7
|
# Parses RSS and Atom feed responses.
|
8
|
-
class FeedParser <
|
9
|
-
|
8
|
+
class FeedParser < BaseMiddleware
|
10
9
|
def on_complete(env)
|
11
|
-
if env[:response_headers][
|
10
|
+
if env[:response_headers]['content-type'] =~ /(\batom|\brss)/
|
12
11
|
require 'rss'
|
13
12
|
env[:body] = RSS::Parser.parse env[:body]
|
14
13
|
end
|
15
14
|
end
|
16
|
-
|
17
15
|
end
|
18
16
|
end
|
19
17
|
end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'octokit/response/base_middleware'
|
2
4
|
require 'octokit/error'
|
3
5
|
|
4
6
|
module Octokit
|
5
7
|
# Faraday response middleware
|
6
8
|
module Response
|
7
|
-
|
8
9
|
# This class raises an Octokit-flavored exception based
|
9
10
|
# HTTP status codes returned by the API
|
10
|
-
class RaiseError <
|
11
|
-
|
11
|
+
class RaiseError < BaseMiddleware
|
12
12
|
def on_complete(response)
|
13
13
|
if error = Octokit::Error.from_response(response)
|
14
14
|
raise error
|
data/lib/octokit/user.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Octokit
|
2
4
|
# GitHub user class to generate API path urls
|
3
5
|
class User
|
@@ -5,14 +7,14 @@ module Octokit
|
|
5
7
|
#
|
6
8
|
# @param user [String, Integer] GitHub user login or id
|
7
9
|
# @return [String] User Api path
|
8
|
-
def self.path
|
10
|
+
def self.path(user)
|
9
11
|
case user
|
10
12
|
when String
|
11
13
|
"users/#{user}"
|
12
14
|
when Integer
|
13
15
|
"user/#{user}"
|
14
16
|
else
|
15
|
-
|
17
|
+
'user'
|
16
18
|
end
|
17
19
|
end
|
18
20
|
end
|
data/lib/octokit/version.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Octokit
|
2
4
|
# Current major release.
|
3
5
|
# @return [Integer]
|
4
|
-
MAJOR =
|
6
|
+
MAJOR = 10
|
5
7
|
|
6
8
|
# Current minor release.
|
7
9
|
# @return [Integer]
|
8
|
-
MINOR =
|
10
|
+
MINOR = 0
|
9
11
|
|
10
12
|
# Current patch level.
|
11
13
|
# @return [Integer]
|
data/lib/octokit/warnable.rb
CHANGED
@@ -1,17 +1,16 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module Octokit
|
3
4
|
# Allows warnings to be suppressed via environment variable.
|
4
5
|
module Warnable
|
6
|
+
module_function
|
5
7
|
|
6
8
|
# Wrapper around Kernel#warn to print warnings unless
|
7
9
|
# OCTOKIT_SILENT is set to true.
|
8
10
|
#
|
9
11
|
# @return [nil]
|
10
12
|
def octokit_warn(*message)
|
11
|
-
unless ENV['OCTOKIT_SILENT']
|
12
|
-
warn message
|
13
|
-
end
|
13
|
+
warn message unless ENV['OCTOKIT_SILENT']
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
data/lib/octokit.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'octokit/default'
|
1
4
|
require 'octokit/client'
|
2
5
|
require 'octokit/enterprise_admin_client'
|
3
6
|
require 'octokit/enterprise_management_console_client'
|
4
|
-
require 'octokit/
|
7
|
+
require 'octokit/manage_ghes_client'
|
5
8
|
|
6
9
|
# Ruby toolkit for the GitHub API
|
7
10
|
module Octokit
|
8
|
-
|
9
11
|
class << self
|
10
12
|
include Octokit::Configurable
|
11
13
|
|
@@ -14,6 +16,7 @@ module Octokit
|
|
14
16
|
# @return [Octokit::Client] API wrapper
|
15
17
|
def client
|
16
18
|
return @client if defined?(@client) && @client.same_options?(options)
|
19
|
+
|
17
20
|
@client = Octokit::Client.new(options)
|
18
21
|
end
|
19
22
|
|
@@ -21,7 +24,10 @@ module Octokit
|
|
21
24
|
#
|
22
25
|
# @return [Octokit::EnterpriseAdminClient] API wrapper
|
23
26
|
def enterprise_admin_client
|
24
|
-
|
27
|
+
if defined?(@enterprise_admin_client) && @enterprise_admin_client.same_options?(options)
|
28
|
+
return @enterprise_admin_client
|
29
|
+
end
|
30
|
+
|
25
31
|
@enterprise_admin_client = Octokit::EnterpriseAdminClient.new(options)
|
26
32
|
end
|
27
33
|
|
@@ -29,16 +35,31 @@ module Octokit
|
|
29
35
|
#
|
30
36
|
# @return [Octokit::EnterpriseManagementConsoleClient] API wrapper
|
31
37
|
def enterprise_management_console_client
|
32
|
-
|
38
|
+
if defined?(@enterprise_management_console_client) && @enterprise_management_console_client.same_options?(options)
|
39
|
+
return @enterprise_management_console_client
|
40
|
+
end
|
41
|
+
|
33
42
|
@enterprise_management_console_client = Octokit::EnterpriseManagementConsoleClient.new(options)
|
34
43
|
end
|
35
44
|
|
45
|
+
# ManageGHESClient client based on configured options {Configurable}
|
46
|
+
#
|
47
|
+
# @return [Octokit::ManageGHESClient] API wrapper
|
48
|
+
def manage_ghes_client
|
49
|
+
if defined?(@manage_ghes_client) && @manage_ghes_client.same_options?(options)
|
50
|
+
return @manage_ghes_client
|
51
|
+
end
|
52
|
+
|
53
|
+
@manage_ghes_client = Octokit::ManageGHESClient.new(options)
|
54
|
+
end
|
55
|
+
|
36
56
|
private
|
37
57
|
|
38
|
-
def respond_to_missing?(method_name, include_private=false)
|
58
|
+
def respond_to_missing?(method_name, include_private = false)
|
39
59
|
client.respond_to?(method_name, include_private) ||
|
40
|
-
|
41
|
-
|
60
|
+
enterprise_admin_client.respond_to?(method_name, include_private) ||
|
61
|
+
enterprise_management_console_client.respond_to?(method_name, include_private) ||
|
62
|
+
manage_ghes_client.respond_to?(method_name, include_private)
|
42
63
|
end
|
43
64
|
|
44
65
|
def method_missing(method_name, *args, &block)
|
@@ -48,11 +69,12 @@ module Octokit
|
|
48
69
|
return enterprise_admin_client.send(method_name, *args, &block)
|
49
70
|
elsif enterprise_management_console_client.respond_to?(method_name)
|
50
71
|
return enterprise_management_console_client.send(method_name, *args, &block)
|
72
|
+
elsif manage_ghes_client.respond_to?(method_name)
|
73
|
+
return manage_ghes_client.send(method_name, *args, &block)
|
51
74
|
end
|
52
75
|
|
53
76
|
super
|
54
77
|
end
|
55
|
-
|
56
78
|
end
|
57
79
|
end
|
58
80
|
|
data/octokit.gemspec
CHANGED
@@ -1,23 +1,24 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'octokit/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.
|
8
|
-
spec.add_dependency 'sawyer', '
|
9
|
-
spec.
|
10
|
-
spec.
|
11
|
-
spec.description = %q{Simple wrapper for the GitHub API}
|
8
|
+
spec.add_dependency 'faraday', '>= 1', '< 3'
|
9
|
+
spec.add_dependency 'sawyer', '~> 0.9'
|
10
|
+
spec.authors = ['Wynn Netherland', 'Erik Michaels-Ober', 'Clint Shryock']
|
11
|
+
spec.description = 'Simple wrapper for the GitHub API'
|
12
12
|
spec.email = ['wynn.netherland@gmail.com', 'sferik@gmail.com', 'clint@ctshryock.com']
|
13
|
-
spec.files = %w
|
14
|
-
spec.files += Dir.glob(
|
13
|
+
spec.files = %w[.document CONTRIBUTING.md LICENSE.md README.md Rakefile octokit.gemspec]
|
14
|
+
spec.files += Dir.glob('lib/**/*.rb')
|
15
15
|
spec.homepage = 'https://github.com/octokit/octokit.rb'
|
16
16
|
spec.licenses = ['MIT']
|
17
17
|
spec.name = 'octokit'
|
18
18
|
spec.require_paths = ['lib']
|
19
|
-
spec.required_ruby_version = '>= 2.
|
19
|
+
spec.required_ruby_version = '>= 2.7.0'
|
20
20
|
spec.required_rubygems_version = '>= 1.3.5'
|
21
|
-
spec.summary =
|
21
|
+
spec.summary = 'Ruby toolkit for working with the GitHub API'
|
22
22
|
spec.version = Octokit::VERSION.dup
|
23
|
+
spec.metadata = { 'rubygems_mfa_required' => 'true' }
|
23
24
|
end
|