1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
|
# 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 GHES Manage API endpoint from ENV
# @return [String]
def manage_ghes_endpoint
ENV.fetch('OCTOKIT_MANAGE_GHES_ENDPOINT', nil)
end
# Default GHES Manage API username from ENV
# @return [String]
def manage_ghes_username
ENV.fetch('OCTOKIT_MANAGE_GHES_USERNAME', nil)
end
# Default GHES Manage API password from ENV
# @return [String]
def manage_ghes_password
ENV.fetch('OCTOKIT_MANAGE_GHES_PASSWORD', 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
|