oso-cloud 1.8.0 → 1.9.1.pre.vendored.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/.gitignore +0 -1
- data/Gemfile +5 -0
- data/Gemfile.lock +31 -12
- data/README.md +1 -1
- data/lib/oso/api.rb +18 -2
- data/lib/oso/oso.rb +10 -7
- data/lib/oso/version.rb +1 -1
- data/vendor/gems/faraday-2.5.2/CHANGELOG.md +574 -0
- data/vendor/gems/faraday-2.5.2/LICENSE.md +20 -0
- data/vendor/gems/faraday-2.5.2/README.md +55 -0
- data/vendor/gems/faraday-2.5.2/Rakefile +7 -0
- data/vendor/gems/faraday-2.5.2/examples/client_spec.rb +119 -0
- data/vendor/gems/faraday-2.5.2/examples/client_test.rb +144 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/adapter/test.rb +298 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/adapter.rb +102 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/adapter_registry.rb +30 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/connection.rb +561 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/encoders/flat_params_encoder.rb +105 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/encoders/nested_params_encoder.rb +183 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/error.rb +147 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/logging/formatter.rb +106 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/methods.rb +6 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/middleware.rb +30 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/middleware_registry.rb +83 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/options/connection_options.rb +22 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/options/env.rb +199 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/options/proxy_options.rb +32 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/options/request_options.rb +22 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/options/ssl_options.rb +69 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/options.rb +218 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/parameters.rb +5 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/rack_builder.rb +252 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/request/authorization.rb +49 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/request/instrumentation.rb +56 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/request/json.rb +55 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/request/url_encoded.rb +60 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/request.rb +136 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/response/json.rb +54 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/response/logger.rb +33 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/response/raise_error.rb +64 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/response.rb +90 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/utils/headers.rb +139 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/utils/params_hash.rb +61 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/utils.rb +122 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday/version.rb +5 -0
- data/vendor/gems/faraday-2.5.2/lib/faraday.rb +157 -0
- data/vendor/gems/faraday-2.5.2/spec/external_adapters/faraday_specs_setup.rb +14 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/adapter/test_spec.rb +413 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/adapter_registry_spec.rb +28 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/adapter_spec.rb +55 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/connection_spec.rb +793 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/error_spec.rb +60 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/middleware_registry_spec.rb +31 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/middleware_spec.rb +52 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/options/env_spec.rb +76 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/options/options_spec.rb +297 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/options/proxy_options_spec.rb +44 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/options/request_options_spec.rb +19 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/params_encoders/flat_spec.rb +42 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/params_encoders/nested_spec.rb +150 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/rack_builder_spec.rb +317 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/request/authorization_spec.rb +83 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/request/instrumentation_spec.rb +74 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/request/json_spec.rb +111 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/request/url_encoded_spec.rb +93 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/request_spec.rb +110 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/response/json_spec.rb +117 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/response/logger_spec.rb +220 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/response/raise_error_spec.rb +172 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/response_spec.rb +75 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/utils/headers_spec.rb +82 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday/utils_spec.rb +118 -0
- data/vendor/gems/faraday-2.5.2/spec/faraday_spec.rb +37 -0
- data/vendor/gems/faraday-2.5.2/spec/spec_helper.rb +132 -0
- data/vendor/gems/faraday-2.5.2/spec/support/disabling_stub.rb +14 -0
- data/vendor/gems/faraday-2.5.2/spec/support/fake_safe_buffer.rb +15 -0
- data/vendor/gems/faraday-2.5.2/spec/support/helper_methods.rb +96 -0
- data/vendor/gems/faraday-2.5.2/spec/support/shared_examples/adapter.rb +105 -0
- data/vendor/gems/faraday-2.5.2/spec/support/shared_examples/params_encoder.rb +18 -0
- data/vendor/gems/faraday-2.5.2/spec/support/shared_examples/request_method.rb +263 -0
- data/vendor/gems/faraday-2.5.2/spec/support/streaming_response_checker.rb +35 -0
- data/vendor/gems/faraday-net_http-3.0.2/LICENSE.md +21 -0
- data/vendor/gems/faraday-net_http-3.0.2/README.md +57 -0
- data/vendor/gems/faraday-net_http-3.0.2/lib/faraday/adapter/net_http.rb +208 -0
- data/vendor/gems/faraday-net_http-3.0.2/lib/faraday/net_http/version.rb +7 -0
- data/vendor/gems/faraday-net_http-3.0.2/lib/faraday/net_http.rb +10 -0
- data/vendor/gems/faraday-net_http_persistent-2.3.0/LICENSE.md +21 -0
- data/vendor/gems/faraday-net_http_persistent-2.3.0/README.md +66 -0
- data/vendor/gems/faraday-net_http_persistent-2.3.0/lib/faraday/adapter/net_http_persistent.rb +234 -0
- data/vendor/gems/faraday-net_http_persistent-2.3.0/lib/faraday/net_http_persistent/version.rb +7 -0
- data/vendor/gems/faraday-net_http_persistent-2.3.0/lib/faraday/net_http_persistent.rb +18 -0
- data/vendor/gems/faraday-retry-2.0.0/CHANGELOG.md +24 -0
- data/vendor/gems/faraday-retry-2.0.0/LICENSE.md +21 -0
- data/vendor/gems/faraday-retry-2.0.0/README.md +169 -0
- data/vendor/gems/faraday-retry-2.0.0/lib/faraday/retriable_response.rb +8 -0
- data/vendor/gems/faraday-retry-2.0.0/lib/faraday/retry/middleware.rb +254 -0
- data/vendor/gems/faraday-retry-2.0.0/lib/faraday/retry/version.rb +7 -0
- data/vendor/gems/faraday-retry-2.0.0/lib/faraday/retry.rb +13 -0
- data/vendor/gems/net-http-persistent-4.0.5/.autotest +9 -0
- data/vendor/gems/net-http-persistent-4.0.5/.gemtest +0 -0
- data/vendor/gems/net-http-persistent-4.0.5/Gemfile +14 -0
- data/vendor/gems/net-http-persistent-4.0.5/History.txt +460 -0
- data/vendor/gems/net-http-persistent-4.0.5/Manifest.txt +13 -0
- data/vendor/gems/net-http-persistent-4.0.5/README.rdoc +82 -0
- data/vendor/gems/net-http-persistent-4.0.5/Rakefile +25 -0
- data/vendor/gems/net-http-persistent-4.0.5/lib/net/http/persistent/connection.rb +41 -0
- data/vendor/gems/net-http-persistent-4.0.5/lib/net/http/persistent/pool.rb +65 -0
- data/vendor/gems/net-http-persistent-4.0.5/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/vendor/gems/net-http-persistent-4.0.5/lib/net/http/persistent.rb +1158 -0
- data/vendor/gems/net-http-persistent-4.0.5/test/test_net_http_persistent.rb +1512 -0
- data/vendor/gems/net-http-persistent-4.0.5/test/test_net_http_persistent_timed_stack_multi.rb +151 -0
- metadata +112 -8
@@ -0,0 +1,199 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faraday
|
4
|
+
# @!attribute method
|
5
|
+
# @return [Symbol] HTTP method (`:get`, `:post`)
|
6
|
+
#
|
7
|
+
# @!attribute body
|
8
|
+
# @return [String] The request body that will eventually be converted to a
|
9
|
+
# string.
|
10
|
+
#
|
11
|
+
# @!attribute url
|
12
|
+
# @return [URI] URI instance for the current request.
|
13
|
+
#
|
14
|
+
# @!attribute request
|
15
|
+
# @return [Hash] options for configuring the request.
|
16
|
+
# Options for configuring the request.
|
17
|
+
#
|
18
|
+
# - `:timeout` open/read timeout Integer in seconds
|
19
|
+
# - `:open_timeout` - read timeout Integer in seconds
|
20
|
+
# - `:on_data` - Proc for streaming
|
21
|
+
# - `:proxy` - Hash of proxy options
|
22
|
+
# - `:uri` - Proxy Server URI
|
23
|
+
# - `:user` - Proxy server username
|
24
|
+
# - `:password` - Proxy server password
|
25
|
+
#
|
26
|
+
# @!attribute request_headers
|
27
|
+
# @return [Hash] HTTP Headers to be sent to the server.
|
28
|
+
#
|
29
|
+
# @!attribute ssl
|
30
|
+
# @return [Hash] options for configuring SSL requests
|
31
|
+
#
|
32
|
+
# @!attribute parallel_manager
|
33
|
+
# @return [Object] sent if the connection is in parallel mode
|
34
|
+
#
|
35
|
+
# @!attribute params
|
36
|
+
# @return [Hash]
|
37
|
+
#
|
38
|
+
# @!attribute response
|
39
|
+
# @return [Response]
|
40
|
+
#
|
41
|
+
# @!attribute response_headers
|
42
|
+
# @return [Hash] HTTP headers from the server
|
43
|
+
#
|
44
|
+
# @!attribute status
|
45
|
+
# @return [Integer] HTTP response status code
|
46
|
+
#
|
47
|
+
# @!attribute reason_phrase
|
48
|
+
# @return [String]
|
49
|
+
class Env < Options.new(:method, :request_body, :url, :request,
|
50
|
+
:request_headers, :ssl, :parallel_manager, :params,
|
51
|
+
:response, :response_headers, :status,
|
52
|
+
:reason_phrase, :response_body)
|
53
|
+
|
54
|
+
# rubocop:disable Naming/ConstantName
|
55
|
+
ContentLength = 'Content-Length'
|
56
|
+
StatusesWithoutBody = Set.new [204, 304]
|
57
|
+
SuccessfulStatuses = (200..299).freeze
|
58
|
+
# rubocop:enable Naming/ConstantName
|
59
|
+
|
60
|
+
# A Set of HTTP verbs that typically send a body. If no body is set for
|
61
|
+
# these requests, the Content-Length header is set to 0.
|
62
|
+
MethodsWithBodies = Set.new(Faraday::METHODS_WITH_BODY.map(&:to_sym))
|
63
|
+
|
64
|
+
options request: RequestOptions,
|
65
|
+
request_headers: Utils::Headers, response_headers: Utils::Headers
|
66
|
+
|
67
|
+
extend Forwardable
|
68
|
+
|
69
|
+
def_delegators :request, :params_encoder
|
70
|
+
|
71
|
+
# Build a new Env from given value. Respects and updates `custom_members`.
|
72
|
+
#
|
73
|
+
# @param value [Object] a value fitting Option.from(v).
|
74
|
+
# @return [Env] from given value
|
75
|
+
def self.from(value)
|
76
|
+
env = super(value)
|
77
|
+
if value.respond_to?(:custom_members)
|
78
|
+
env.custom_members.update(value.custom_members)
|
79
|
+
end
|
80
|
+
env
|
81
|
+
end
|
82
|
+
|
83
|
+
# @param key [Object]
|
84
|
+
def [](key)
|
85
|
+
return self[current_body] if key == :body
|
86
|
+
|
87
|
+
if in_member_set?(key)
|
88
|
+
super(key)
|
89
|
+
else
|
90
|
+
custom_members[key]
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# @param key [Object]
|
95
|
+
# @param value [Object]
|
96
|
+
def []=(key, value)
|
97
|
+
if key == :body
|
98
|
+
super(current_body, value)
|
99
|
+
return
|
100
|
+
end
|
101
|
+
|
102
|
+
if in_member_set?(key)
|
103
|
+
super(key, value)
|
104
|
+
else
|
105
|
+
custom_members[key] = value
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def current_body
|
110
|
+
!!status ? :response_body : :request_body
|
111
|
+
end
|
112
|
+
|
113
|
+
def body
|
114
|
+
self[:body]
|
115
|
+
end
|
116
|
+
|
117
|
+
def body=(value)
|
118
|
+
self[:body] = value
|
119
|
+
end
|
120
|
+
|
121
|
+
# @return [Boolean] true if status is in the set of {SuccessfulStatuses}.
|
122
|
+
def success?
|
123
|
+
SuccessfulStatuses.include?(status)
|
124
|
+
end
|
125
|
+
|
126
|
+
# @return [Boolean] true if there's no body yet, and the method is in the
|
127
|
+
# set of {MethodsWithBodies}.
|
128
|
+
def needs_body?
|
129
|
+
!body && MethodsWithBodies.include?(method)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Sets content length to zero and the body to the empty string.
|
133
|
+
def clear_body
|
134
|
+
request_headers[ContentLength] = '0'
|
135
|
+
self.body = +''
|
136
|
+
end
|
137
|
+
|
138
|
+
# @return [Boolean] true if the status isn't in the set of
|
139
|
+
# {StatusesWithoutBody}.
|
140
|
+
def parse_body?
|
141
|
+
!StatusesWithoutBody.include?(status)
|
142
|
+
end
|
143
|
+
|
144
|
+
# @return [Boolean] true if there is a parallel_manager
|
145
|
+
def parallel?
|
146
|
+
!!parallel_manager
|
147
|
+
end
|
148
|
+
|
149
|
+
def inspect
|
150
|
+
attrs = [nil]
|
151
|
+
members.each do |mem|
|
152
|
+
if (value = send(mem))
|
153
|
+
attrs << "@#{mem}=#{value.inspect}"
|
154
|
+
end
|
155
|
+
end
|
156
|
+
attrs << "@custom=#{custom_members.inspect}" unless custom_members.empty?
|
157
|
+
%(#<#{self.class}#{attrs.join(' ')}>)
|
158
|
+
end
|
159
|
+
|
160
|
+
def stream_response?
|
161
|
+
request.stream_response?
|
162
|
+
end
|
163
|
+
|
164
|
+
def stream_response(&block)
|
165
|
+
size = 0
|
166
|
+
yielded = false
|
167
|
+
block_result = block.call do |chunk| # rubocop:disable Performance/RedundantBlockCall
|
168
|
+
if chunk.bytesize.positive? || size.positive?
|
169
|
+
yielded = true
|
170
|
+
size += chunk.bytesize
|
171
|
+
request.on_data.call(chunk, size, self)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
request.on_data.call(+'', 0, self) unless yielded
|
175
|
+
block_result
|
176
|
+
end
|
177
|
+
|
178
|
+
# @private
|
179
|
+
def custom_members
|
180
|
+
@custom_members ||= {}
|
181
|
+
end
|
182
|
+
|
183
|
+
# @private
|
184
|
+
if members.first.is_a?(Symbol)
|
185
|
+
def in_member_set?(key)
|
186
|
+
self.class.member_set.include?(key.to_sym)
|
187
|
+
end
|
188
|
+
else
|
189
|
+
def in_member_set?(key)
|
190
|
+
self.class.member_set.include?(key.to_s)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
# @private
|
195
|
+
def self.member_set
|
196
|
+
@member_set ||= Set.new(members)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faraday
|
4
|
+
# ProxyOptions contains the configurable properties for the proxy
|
5
|
+
# configuration used when making an HTTP request.
|
6
|
+
class ProxyOptions < Options.new(:uri, :user, :password)
|
7
|
+
extend Forwardable
|
8
|
+
def_delegators :uri, :scheme, :scheme=, :host, :host=, :port, :port=,
|
9
|
+
:path, :path=
|
10
|
+
|
11
|
+
def self.from(value)
|
12
|
+
case value
|
13
|
+
when String
|
14
|
+
# URIs without a scheme should default to http (like 'example:123').
|
15
|
+
# This fixes #1282 and prevents a silent failure in some adapters.
|
16
|
+
value = "http://#{value}" unless value.include?('://')
|
17
|
+
value = { uri: Utils.URI(value) }
|
18
|
+
when URI
|
19
|
+
value = { uri: value }
|
20
|
+
when Hash, Options
|
21
|
+
if (uri = value.delete(:uri))
|
22
|
+
value[:uri] = Utils.URI(uri)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
super(value)
|
27
|
+
end
|
28
|
+
|
29
|
+
memoized(:user) { uri&.user && Utils.unescape(uri.user) }
|
30
|
+
memoized(:password) { uri&.password && Utils.unescape(uri.password) }
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faraday
|
4
|
+
# RequestOptions contains the configurable properties for a Faraday request.
|
5
|
+
class RequestOptions < Options.new(:params_encoder, :proxy, :bind,
|
6
|
+
:timeout, :open_timeout, :read_timeout,
|
7
|
+
:write_timeout, :boundary, :oauth,
|
8
|
+
:context, :on_data)
|
9
|
+
|
10
|
+
def []=(key, value)
|
11
|
+
if key && key.to_sym == :proxy
|
12
|
+
super(key, value ? ProxyOptions.from(value) : nil)
|
13
|
+
else
|
14
|
+
super(key, value)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def stream_response?
|
19
|
+
on_data.is_a?(Proc)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faraday
|
4
|
+
# SSL-related options.
|
5
|
+
#
|
6
|
+
# @!attribute verify
|
7
|
+
# @return [Boolean] whether to verify SSL certificates or not
|
8
|
+
#
|
9
|
+
# @!attribute verify_hostname
|
10
|
+
# @return [Boolean] whether to enable hostname verification on server certificates
|
11
|
+
# during the handshake or not (see https://github.com/ruby/openssl/pull/60)
|
12
|
+
#
|
13
|
+
# @!attribute ca_file
|
14
|
+
# @return [String] CA file
|
15
|
+
#
|
16
|
+
# @!attribute ca_path
|
17
|
+
# @return [String] CA path
|
18
|
+
#
|
19
|
+
# @!attribute verify_mode
|
20
|
+
# @return [Integer] Any `OpenSSL::SSL::` constant (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL.html)
|
21
|
+
#
|
22
|
+
# @!attribute cert_store
|
23
|
+
# @return [OpenSSL::X509::Store] certificate store
|
24
|
+
#
|
25
|
+
# @!attribute client_cert
|
26
|
+
# @return [String, OpenSSL::X509::Certificate] client certificate
|
27
|
+
#
|
28
|
+
# @!attribute client_key
|
29
|
+
# @return [String, OpenSSL::PKey::RSA, OpenSSL::PKey::DSA] client key
|
30
|
+
#
|
31
|
+
# @!attribute certificate
|
32
|
+
# @return [OpenSSL::X509::Certificate] certificate (Excon only)
|
33
|
+
#
|
34
|
+
# @!attribute private_key
|
35
|
+
# @return [OpenSSL::PKey::RSA, OpenSSL::PKey::DSA] private key (Excon only)
|
36
|
+
#
|
37
|
+
# @!attribute verify_depth
|
38
|
+
# @return [Integer] maximum depth for the certificate chain verification
|
39
|
+
#
|
40
|
+
# @!attribute version
|
41
|
+
# @return [String, Symbol] SSL version (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL/SSLContext.html#method-i-ssl_version-3D)
|
42
|
+
#
|
43
|
+
# @!attribute min_version
|
44
|
+
# @return [String, Symbol] minimum SSL version (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL/SSLContext.html#method-i-min_version-3D)
|
45
|
+
#
|
46
|
+
# @!attribute max_version
|
47
|
+
# @return [String, Symbol] maximum SSL version (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL/SSLContext.html#method-i-max_version-3D)
|
48
|
+
class SSLOptions < Options.new(:verify, :verify_hostname,
|
49
|
+
:ca_file, :ca_path, :verify_mode,
|
50
|
+
:cert_store, :client_cert, :client_key,
|
51
|
+
:certificate, :private_key, :verify_depth,
|
52
|
+
:version, :min_version, :max_version)
|
53
|
+
|
54
|
+
# @return [Boolean] true if should verify
|
55
|
+
def verify?
|
56
|
+
verify != false
|
57
|
+
end
|
58
|
+
|
59
|
+
# @return [Boolean] true if should not verify
|
60
|
+
def disable?
|
61
|
+
!verify?
|
62
|
+
end
|
63
|
+
|
64
|
+
# @return [Boolean] true if should verify_hostname
|
65
|
+
def verify_hostname?
|
66
|
+
verify_hostname != false
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,218 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faraday
|
4
|
+
# Subclasses Struct with some special helpers for converting from a Hash to
|
5
|
+
# a Struct.
|
6
|
+
class Options < Struct
|
7
|
+
# Public
|
8
|
+
def self.from(value)
|
9
|
+
value ? new.update(value) : new
|
10
|
+
end
|
11
|
+
|
12
|
+
# Public
|
13
|
+
def each
|
14
|
+
return to_enum(:each) unless block_given?
|
15
|
+
|
16
|
+
members.each do |key|
|
17
|
+
yield(key.to_sym, send(key))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Public
|
22
|
+
def update(obj)
|
23
|
+
obj.each do |key, value|
|
24
|
+
sub_options = self.class.options_for(key)
|
25
|
+
if sub_options
|
26
|
+
new_value = sub_options.from(value) if value
|
27
|
+
elsif value.is_a?(Hash)
|
28
|
+
new_value = value.dup
|
29
|
+
else
|
30
|
+
new_value = value
|
31
|
+
end
|
32
|
+
|
33
|
+
send("#{key}=", new_value) unless new_value.nil?
|
34
|
+
end
|
35
|
+
self
|
36
|
+
end
|
37
|
+
|
38
|
+
# Public
|
39
|
+
def delete(key)
|
40
|
+
value = send(key)
|
41
|
+
send("#{key}=", nil)
|
42
|
+
value
|
43
|
+
end
|
44
|
+
|
45
|
+
# Public
|
46
|
+
def clear
|
47
|
+
members.each { |member| delete(member) }
|
48
|
+
end
|
49
|
+
|
50
|
+
# Public
|
51
|
+
def merge!(other)
|
52
|
+
other.each do |key, other_value|
|
53
|
+
self_value = send(key)
|
54
|
+
sub_options = self.class.options_for(key)
|
55
|
+
new_value = if self_value && sub_options && other_value
|
56
|
+
self_value.merge(other_value)
|
57
|
+
else
|
58
|
+
other_value
|
59
|
+
end
|
60
|
+
send("#{key}=", new_value) unless new_value.nil?
|
61
|
+
end
|
62
|
+
self
|
63
|
+
end
|
64
|
+
|
65
|
+
# Public
|
66
|
+
def merge(other)
|
67
|
+
dup.merge!(other)
|
68
|
+
end
|
69
|
+
|
70
|
+
# Public
|
71
|
+
def deep_dup
|
72
|
+
self.class.from(self)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Public
|
76
|
+
def fetch(key, *args)
|
77
|
+
unless symbolized_key_set.include?(key.to_sym)
|
78
|
+
key_setter = "#{key}="
|
79
|
+
if !args.empty?
|
80
|
+
send(key_setter, args.first)
|
81
|
+
elsif block_given?
|
82
|
+
send(key_setter, yield(key))
|
83
|
+
else
|
84
|
+
raise self.class.fetch_error_class, "key not found: #{key.inspect}"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
send(key)
|
88
|
+
end
|
89
|
+
|
90
|
+
# Public
|
91
|
+
def values_at(*keys)
|
92
|
+
keys.map { |key| send(key) }
|
93
|
+
end
|
94
|
+
|
95
|
+
# Public
|
96
|
+
def keys
|
97
|
+
members.reject { |member| send(member).nil? }
|
98
|
+
end
|
99
|
+
|
100
|
+
# Public
|
101
|
+
def empty?
|
102
|
+
keys.empty?
|
103
|
+
end
|
104
|
+
|
105
|
+
# Public
|
106
|
+
def each_key(&block)
|
107
|
+
return to_enum(:each_key) unless block
|
108
|
+
|
109
|
+
keys.each(&block)
|
110
|
+
end
|
111
|
+
|
112
|
+
# Public
|
113
|
+
def key?(key)
|
114
|
+
keys.include?(key)
|
115
|
+
end
|
116
|
+
|
117
|
+
alias has_key? key?
|
118
|
+
|
119
|
+
# Public
|
120
|
+
def each_value(&block)
|
121
|
+
return to_enum(:each_value) unless block
|
122
|
+
|
123
|
+
values.each(&block)
|
124
|
+
end
|
125
|
+
|
126
|
+
# Public
|
127
|
+
def value?(value)
|
128
|
+
values.include?(value)
|
129
|
+
end
|
130
|
+
|
131
|
+
alias has_value? value?
|
132
|
+
|
133
|
+
# Public
|
134
|
+
def to_hash
|
135
|
+
hash = {}
|
136
|
+
members.each do |key|
|
137
|
+
value = send(key)
|
138
|
+
hash[key.to_sym] = value unless value.nil?
|
139
|
+
end
|
140
|
+
hash
|
141
|
+
end
|
142
|
+
|
143
|
+
# Internal
|
144
|
+
def inspect
|
145
|
+
values = []
|
146
|
+
members.each do |member|
|
147
|
+
value = send(member)
|
148
|
+
values << "#{member}=#{value.inspect}" if value
|
149
|
+
end
|
150
|
+
values = values.empty? ? '(empty)' : values.join(', ')
|
151
|
+
|
152
|
+
%(#<#{self.class} #{values}>)
|
153
|
+
end
|
154
|
+
|
155
|
+
# Internal
|
156
|
+
def self.options(mapping)
|
157
|
+
attribute_options.update(mapping)
|
158
|
+
end
|
159
|
+
|
160
|
+
# Internal
|
161
|
+
def self.options_for(key)
|
162
|
+
attribute_options[key]
|
163
|
+
end
|
164
|
+
|
165
|
+
# Internal
|
166
|
+
def self.attribute_options
|
167
|
+
@attribute_options ||= {}
|
168
|
+
end
|
169
|
+
|
170
|
+
def self.memoized(key, &block)
|
171
|
+
unless block
|
172
|
+
raise ArgumentError, '#memoized must be called with a block'
|
173
|
+
end
|
174
|
+
|
175
|
+
memoized_attributes[key.to_sym] = block
|
176
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
177
|
+
def #{key}() self[:#{key}]; end
|
178
|
+
RUBY
|
179
|
+
end
|
180
|
+
|
181
|
+
def self.memoized_attributes
|
182
|
+
@memoized_attributes ||= {}
|
183
|
+
end
|
184
|
+
|
185
|
+
def [](key)
|
186
|
+
key = key.to_sym
|
187
|
+
if (method = self.class.memoized_attributes[key])
|
188
|
+
super(key) || (self[key] = instance_eval(&method))
|
189
|
+
else
|
190
|
+
super
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
def symbolized_key_set
|
195
|
+
@symbolized_key_set ||= Set.new(keys.map(&:to_sym))
|
196
|
+
end
|
197
|
+
|
198
|
+
def self.inherited(subclass)
|
199
|
+
super
|
200
|
+
subclass.attribute_options.update(attribute_options)
|
201
|
+
subclass.memoized_attributes.update(memoized_attributes)
|
202
|
+
end
|
203
|
+
|
204
|
+
def self.fetch_error_class
|
205
|
+
@fetch_error_class ||= if Object.const_defined?(:KeyError)
|
206
|
+
::KeyError
|
207
|
+
else
|
208
|
+
::IndexError
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
require 'faraday/options/request_options'
|
215
|
+
require 'faraday/options/ssl_options'
|
216
|
+
require 'faraday/options/proxy_options'
|
217
|
+
require 'faraday/options/connection_options'
|
218
|
+
require 'faraday/options/env'
|