This commit is contained in:
@@ -0,0 +1,189 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'octokit/middleware/follow_redirects'
|
||||
require 'octokit/response/raise_error'
|
||||
require 'octokit/response/feed_parser'
|
||||
require 'octokit/version'
|
||||
require 'octokit/warnable'
|
||||
|
||||
if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
|
||||
begin
|
||||
require 'faraday/retry'
|
||||
rescue LoadError
|
||||
Octokit::Warnable.octokit_warn 'To use retry middleware with Faraday v2.0+, install `faraday-retry` gem'
|
||||
end
|
||||
end
|
||||
|
||||
module Octokit
|
||||
# Default configuration options for {Client}
|
||||
module Default
|
||||
# Default API endpoint
|
||||
API_ENDPOINT = 'https://api.github.com'
|
||||
|
||||
# Default User Agent header string
|
||||
USER_AGENT = "Octokit Ruby Gem #{Octokit::VERSION}"
|
||||
|
||||
# Default media type
|
||||
MEDIA_TYPE = 'application/vnd.github.v3+json'
|
||||
|
||||
# Default WEB endpoint
|
||||
WEB_ENDPOINT = 'https://github.com'
|
||||
|
||||
# Default Faraday middleware stack
|
||||
MIDDLEWARE = Faraday::RackBuilder.new do |builder|
|
||||
# In Faraday 2.x, Faraday::Request::Retry was moved to a separate gem
|
||||
# so we use it only when it's available.
|
||||
if defined?(Faraday::Request::Retry)
|
||||
retry_exceptions = Faraday::Request::Retry::DEFAULT_EXCEPTIONS + [Octokit::ServerError]
|
||||
builder.use Faraday::Request::Retry, exceptions: retry_exceptions
|
||||
elsif defined?(Faraday::Retry::Middleware)
|
||||
retry_exceptions = Faraday::Retry::Middleware::DEFAULT_EXCEPTIONS + [Octokit::ServerError]
|
||||
builder.use Faraday::Retry::Middleware, exceptions: retry_exceptions
|
||||
end
|
||||
|
||||
builder.use Octokit::Middleware::FollowRedirects
|
||||
builder.use Octokit::Response::RaiseError
|
||||
builder.use Octokit::Response::FeedParser
|
||||
builder.adapter Faraday.default_adapter
|
||||
end
|
||||
|
||||
class << self
|
||||
# Configuration options
|
||||
# @return [Hash]
|
||||
def options
|
||||
Octokit::Configurable.keys.to_h { |key| [key, send(key)] }
|
||||
end
|
||||
|
||||
# Default access token from ENV
|
||||
# @return [String]
|
||||
def access_token
|
||||
ENV.fetch('OCTOKIT_ACCESS_TOKEN', nil)
|
||||
end
|
||||
|
||||
# Default API endpoint from ENV or {API_ENDPOINT}
|
||||
# @return [String]
|
||||
def api_endpoint
|
||||
ENV.fetch('OCTOKIT_API_ENDPOINT') { API_ENDPOINT }
|
||||
end
|
||||
|
||||
# Default pagination preference from ENV
|
||||
# @return [String]
|
||||
def auto_paginate
|
||||
ENV.fetch('OCTOKIT_AUTO_PAGINATE', nil)
|
||||
end
|
||||
|
||||
# Default bearer token from ENV
|
||||
# @return [String]
|
||||
def bearer_token
|
||||
ENV.fetch('OCTOKIT_BEARER_TOKEN', nil)
|
||||
end
|
||||
|
||||
# Default OAuth app key from ENV
|
||||
# @return [String]
|
||||
def client_id
|
||||
ENV.fetch('OCTOKIT_CLIENT_ID', nil)
|
||||
end
|
||||
|
||||
# Default OAuth app secret from ENV
|
||||
# @return [String]
|
||||
def client_secret
|
||||
ENV.fetch('OCTOKIT_SECRET', nil)
|
||||
end
|
||||
|
||||
# Default management console password from ENV
|
||||
# @return [String]
|
||||
def management_console_password
|
||||
ENV.fetch('OCTOKIT_ENTERPRISE_MANAGEMENT_CONSOLE_PASSWORD', nil)
|
||||
end
|
||||
|
||||
# Default management console endpoint from ENV
|
||||
# @return [String]
|
||||
def management_console_endpoint
|
||||
ENV.fetch('OCTOKIT_ENTERPRISE_MANAGEMENT_CONSOLE_ENDPOINT', nil)
|
||||
end
|
||||
|
||||
# Default options for Faraday::Connection
|
||||
# @return [Hash]
|
||||
def connection_options
|
||||
{
|
||||
headers: {
|
||||
accept: default_media_type,
|
||||
user_agent: user_agent
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
# Default media type from ENV or {MEDIA_TYPE}
|
||||
# @return [String]
|
||||
def default_media_type
|
||||
ENV.fetch('OCTOKIT_DEFAULT_MEDIA_TYPE') { MEDIA_TYPE }
|
||||
end
|
||||
|
||||
# Default GitHub username for Basic Auth from ENV
|
||||
# @return [String]
|
||||
def login
|
||||
ENV.fetch('OCTOKIT_LOGIN', nil)
|
||||
end
|
||||
|
||||
# Default middleware stack for Faraday::Connection
|
||||
# from {MIDDLEWARE}
|
||||
# @return [Faraday::RackBuilder or Faraday::Builder]
|
||||
def middleware
|
||||
MIDDLEWARE
|
||||
end
|
||||
|
||||
# Default GitHub password for Basic Auth from ENV
|
||||
# @return [String]
|
||||
def password
|
||||
ENV.fetch('OCTOKIT_PASSWORD', nil)
|
||||
end
|
||||
|
||||
# Default pagination page size from ENV
|
||||
# @return [Integer] Page size
|
||||
def per_page
|
||||
page_size = ENV.fetch('OCTOKIT_PER_PAGE', nil)
|
||||
|
||||
page_size&.to_i
|
||||
end
|
||||
|
||||
# Default proxy server URI for Faraday connection from ENV
|
||||
# @return [String]
|
||||
def proxy
|
||||
ENV.fetch('OCTOKIT_PROXY', nil)
|
||||
end
|
||||
|
||||
# Default SSL verify mode from ENV
|
||||
# @return [Integer]
|
||||
def ssl_verify_mode
|
||||
# 0 is OpenSSL::SSL::VERIFY_NONE
|
||||
# 1 is OpenSSL::SSL::SSL_VERIFY_PEER
|
||||
# the standard default for SSL is SSL_VERIFY_PEER which requires a server certificate check on the client
|
||||
ENV.fetch('OCTOKIT_SSL_VERIFY_MODE', 1).to_i
|
||||
end
|
||||
|
||||
# Default User-Agent header string from ENV or {USER_AGENT}
|
||||
# @return [String]
|
||||
def user_agent
|
||||
ENV.fetch('OCTOKIT_USER_AGENT') { USER_AGENT }
|
||||
end
|
||||
|
||||
# Default web endpoint from ENV or {WEB_ENDPOINT}
|
||||
# @return [String]
|
||||
def web_endpoint
|
||||
ENV.fetch('OCTOKIT_WEB_ENDPOINT') { WEB_ENDPOINT }
|
||||
end
|
||||
|
||||
# Default behavior for reading .netrc file
|
||||
# @return [Boolean]
|
||||
def netrc
|
||||
ENV.fetch('OCTOKIT_NETRC', false)
|
||||
end
|
||||
|
||||
# Default path for .netrc file
|
||||
# @return [String]
|
||||
def netrc_file
|
||||
ENV.fetch('OCTOKIT_NETRC_FILE') { File.join(Dir.home.to_s, '.netrc') }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user