File: default.rb

package info (click to toggle)
ruby-octokit 10.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,092 kB
  • sloc: ruby: 13,339; sh: 99; makefile: 7; javascript: 3
file content (207 lines) | stat: -rw-r--r-- 6,004 bytes parent folder | download
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