190 lines
5.4 KiB
Ruby
190 lines
5.4 KiB
Ruby
# 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
|