faraday 0.17.6 → 1.0.0.pre.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +1 -1
  3. data/README.md +18 -358
  4. data/lib/faraday/adapter/em_http.rb +142 -99
  5. data/lib/faraday/adapter/em_http_ssl_patch.rb +23 -17
  6. data/lib/faraday/adapter/em_synchrony/parallel_manager.rb +18 -15
  7. data/lib/faraday/adapter/em_synchrony.rb +104 -60
  8. data/lib/faraday/adapter/excon.rb +97 -57
  9. data/lib/faraday/adapter/httpclient.rb +61 -39
  10. data/lib/faraday/adapter/net_http.rb +103 -51
  11. data/lib/faraday/adapter/net_http_persistent.rb +49 -28
  12. data/lib/faraday/adapter/patron.rb +54 -35
  13. data/lib/faraday/adapter/rack.rb +28 -12
  14. data/lib/faraday/adapter/test.rb +86 -53
  15. data/lib/faraday/adapter/typhoeus.rb +4 -1
  16. data/lib/faraday/adapter.rb +36 -22
  17. data/lib/faraday/adapter_registry.rb +28 -0
  18. data/lib/faraday/autoload.rb +47 -36
  19. data/lib/faraday/connection.rb +321 -179
  20. data/lib/faraday/dependency_loader.rb +37 -0
  21. data/lib/faraday/encoders/flat_params_encoder.rb +94 -0
  22. data/lib/faraday/encoders/nested_params_encoder.rb +171 -0
  23. data/lib/faraday/error.rb +21 -79
  24. data/lib/faraday/logging/formatter.rb +92 -0
  25. data/lib/faraday/middleware.rb +4 -28
  26. data/lib/faraday/middleware_registry.rb +129 -0
  27. data/lib/faraday/options/connection_options.rb +22 -0
  28. data/lib/faraday/options/env.rb +181 -0
  29. data/lib/faraday/options/proxy_options.rb +28 -0
  30. data/lib/faraday/options/request_options.rb +21 -0
  31. data/lib/faraday/options/ssl_options.rb +59 -0
  32. data/lib/faraday/options.rb +33 -184
  33. data/lib/faraday/parameters.rb +4 -197
  34. data/lib/faraday/rack_builder.rb +66 -55
  35. data/lib/faraday/request/authorization.rb +42 -30
  36. data/lib/faraday/request/basic_authentication.rb +14 -7
  37. data/lib/faraday/request/instrumentation.rb +45 -27
  38. data/lib/faraday/request/multipart.rb +72 -49
  39. data/lib/faraday/request/retry.rb +197 -171
  40. data/lib/faraday/request/token_authentication.rb +15 -10
  41. data/lib/faraday/request/url_encoded.rb +41 -23
  42. data/lib/faraday/request.rb +68 -38
  43. data/lib/faraday/response/logger.rb +22 -69
  44. data/lib/faraday/response/raise_error.rb +36 -18
  45. data/lib/faraday/response.rb +22 -15
  46. data/lib/faraday/upload_io.rb +31 -30
  47. data/lib/faraday/utils/headers.rb +139 -0
  48. data/lib/faraday/utils/params_hash.rb +61 -0
  49. data/lib/faraday/utils.rb +28 -245
  50. data/lib/faraday.rb +93 -174
  51. data/spec/external_adapters/faraday_specs_setup.rb +14 -0
  52. metadata +25 -51
  53. data/CHANGELOG.md +0 -232
  54. data/Rakefile +0 -13
  55. data/lib/faraday/deprecate.rb +0 -109
  56. data/spec/faraday/deprecate_spec.rb +0 -147
  57. data/spec/faraday/error_spec.rb +0 -102
  58. data/spec/faraday/response/raise_error_spec.rb +0 -106
  59. data/spec/spec_helper.rb +0 -105
  60. data/test/adapters/default_test.rb +0 -14
  61. data/test/adapters/em_http_test.rb +0 -30
  62. data/test/adapters/em_synchrony_test.rb +0 -32
  63. data/test/adapters/excon_test.rb +0 -30
  64. data/test/adapters/httpclient_test.rb +0 -34
  65. data/test/adapters/integration.rb +0 -263
  66. data/test/adapters/logger_test.rb +0 -136
  67. data/test/adapters/net_http_persistent_test.rb +0 -114
  68. data/test/adapters/net_http_test.rb +0 -79
  69. data/test/adapters/patron_test.rb +0 -40
  70. data/test/adapters/rack_test.rb +0 -38
  71. data/test/adapters/test_middleware_test.rb +0 -157
  72. data/test/adapters/typhoeus_test.rb +0 -38
  73. data/test/authentication_middleware_test.rb +0 -65
  74. data/test/composite_read_io_test.rb +0 -109
  75. data/test/connection_test.rb +0 -738
  76. data/test/env_test.rb +0 -268
  77. data/test/helper.rb +0 -75
  78. data/test/live_server.rb +0 -67
  79. data/test/middleware/instrumentation_test.rb +0 -88
  80. data/test/middleware/retry_test.rb +0 -282
  81. data/test/middleware_stack_test.rb +0 -260
  82. data/test/multibyte.txt +0 -1
  83. data/test/options_test.rb +0 -333
  84. data/test/parameters_test.rb +0 -157
  85. data/test/request_middleware_test.rb +0 -126
  86. data/test/response_middleware_test.rb +0 -72
  87. data/test/strawberry.rb +0 -2
  88. data/test/utils_test.rb +0 -98
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faraday
4
+ # ConnectionOptions contains the configurable properties for a Faraday
5
+ # connection object.
6
+ class ConnectionOptions < Options.new(:request, :proxy, :ssl, :builder, :url,
7
+ :parallel_manager, :params, :headers,
8
+ :builder_class)
9
+
10
+ options request: RequestOptions, ssl: SSLOptions
11
+
12
+ memoized(:request) { self.class.options_for(:request).new }
13
+
14
+ memoized(:ssl) { self.class.options_for(:ssl).new }
15
+
16
+ memoized(:builder_class) { RackBuilder }
17
+
18
+ def new_builder(block)
19
+ builder_class.new(&block)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,181 @@
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
+ # @private
161
+ def custom_members
162
+ @custom_members ||= {}
163
+ end
164
+
165
+ # @private
166
+ if members.first.is_a?(Symbol)
167
+ def in_member_set?(key)
168
+ self.class.member_set.include?(key.to_sym)
169
+ end
170
+ else
171
+ def in_member_set?(key)
172
+ self.class.member_set.include?(key.to_s)
173
+ end
174
+ end
175
+
176
+ # @private
177
+ def self.member_set
178
+ @member_set ||= Set.new(members)
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,28 @@
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
+ value = { uri: Utils.URI(value) }
15
+ when URI
16
+ value = { uri: value }
17
+ when Hash, Options
18
+ if (uri = value.delete(:uri))
19
+ value[:uri] = Utils.URI(uri)
20
+ end
21
+ end
22
+ super(value)
23
+ end
24
+
25
+ memoized(:user) { uri&.user && Utils.unescape(uri.user) }
26
+ memoized(:password) { uri&.password && Utils.unescape(uri.password) }
27
+ end
28
+ end
@@ -0,0 +1,21 @@
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, :write_timeout,
7
+ :boundary, :oauth, :context, :on_data)
8
+
9
+ def []=(key, value)
10
+ if key && key.to_sym == :proxy
11
+ super(key, value ? ProxyOptions.from(value) : nil)
12
+ else
13
+ super(key, value)
14
+ end
15
+ end
16
+
17
+ def stream_response?
18
+ on_data.is_a?(Proc)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,59 @@
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 ca_file
10
+ # @return [String] CA file
11
+ #
12
+ # @!attribute ca_path
13
+ # @return [String] CA path
14
+ #
15
+ # @!attribute verify_mode
16
+ # @return [Integer] Any `OpenSSL::SSL::` constant (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL.html)
17
+ #
18
+ # @!attribute cert_store
19
+ # @return [OpenSSL::X509::Store] certificate store
20
+ #
21
+ # @!attribute client_cert
22
+ # @return [String, OpenSSL::X509::Certificate] client certificate
23
+ #
24
+ # @!attribute client_key
25
+ # @return [String, OpenSSL::PKey::RSA, OpenSSL::PKey::DSA] client key
26
+ #
27
+ # @!attribute certificate
28
+ # @return [OpenSSL::X509::Certificate] certificate (Excon only)
29
+ #
30
+ # @!attribute private_key
31
+ # @return [OpenSSL::PKey::RSA, OpenSSL::PKey::DSA] private key (Excon only)
32
+ #
33
+ # @!attribute verify_depth
34
+ # @return [Integer] maximum depth for the certificate chain verification
35
+ #
36
+ # @!attribute version
37
+ # @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)
38
+ #
39
+ # @!attribute min_version
40
+ # @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)
41
+ #
42
+ # @!attribute max_version
43
+ # @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)
44
+ class SSLOptions < Options.new(:verify, :ca_file, :ca_path, :verify_mode,
45
+ :cert_store, :client_cert, :client_key,
46
+ :certificate, :private_key, :verify_depth,
47
+ :version, :min_version, :max_version)
48
+
49
+ # @return [Boolean] true if should verify
50
+ def verify?
51
+ verify != false
52
+ end
53
+
54
+ # @return [Boolean] true if should not verify
55
+ def disable?
56
+ !verify?
57
+ end
58
+ end
59
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Faraday
2
4
  # Subclasses Struct with some special helpers for converting from a Hash to
3
5
  # a Struct.
@@ -10,6 +12,7 @@ module Faraday
10
12
  # Public
11
13
  def each
12
14
  return to_enum(:each) unless block_given?
15
+
13
16
  members.each do |key|
14
17
  yield(key.to_sym, send(key))
15
18
  end
@@ -27,7 +30,7 @@ module Faraday
27
30
  new_value = value
28
31
  end
29
32
 
30
- self.send("#{key}=", new_value) unless new_value.nil?
33
+ send("#{key}=", new_value) unless new_value.nil?
31
34
  end
32
35
  self
33
36
  end
@@ -47,10 +50,14 @@ module Faraday
47
50
  # Public
48
51
  def merge!(other)
49
52
  other.each do |key, other_value|
50
- self_value = self.send(key)
53
+ self_value = send(key)
51
54
  sub_options = self.class.options_for(key)
52
- new_value = (self_value && sub_options && other_value) ? self_value.merge(other_value) : other_value
53
- self.send("#{key}=", new_value) unless new_value.nil?
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?
54
61
  end
55
62
  self
56
63
  end
@@ -69,10 +76,10 @@ module Faraday
69
76
  def fetch(key, *args)
70
77
  unless symbolized_key_set.include?(key.to_sym)
71
78
  key_setter = "#{key}="
72
- if args.size > 0
79
+ if !args.empty?
73
80
  send(key_setter, args.first)
74
81
  elsif block_given?
75
- send(key_setter, yield(key))
82
+ send(key_setter, Proc.new.call(key))
76
83
  else
77
84
  raise self.class.fetch_error_class, "key not found: #{key.inspect}"
78
85
  end
@@ -98,6 +105,7 @@ module Faraday
98
105
  # Public
99
106
  def each_key
100
107
  return to_enum(:each_key) unless block_given?
108
+
101
109
  keys.each do |key|
102
110
  yield(key)
103
111
  end
@@ -113,6 +121,7 @@ module Faraday
113
121
  # Public
114
122
  def each_value
115
123
  return to_enum(:each_value) unless block_given?
124
+
116
125
  values.each do |value|
117
126
  yield(value)
118
127
  end
@@ -142,9 +151,9 @@ module Faraday
142
151
  value = send(member)
143
152
  values << "#{member}=#{value.inspect}" if value
144
153
  end
145
- values = values.empty? ? ' (empty)' : (' ' << values.join(", "))
154
+ values = values.empty? ? '(empty)' : values.join(', ')
146
155
 
147
- %(#<#{self.class}#{values}>)
156
+ %(#<#{self.class} #{values}>)
148
157
  end
149
158
 
150
159
  # Internal
@@ -163,6 +172,10 @@ module Faraday
163
172
  end
164
173
 
165
174
  def self.memoized(key, &block)
175
+ unless block_given?
176
+ raise ArgumentError, '#memoized must be called with a block'
177
+ end
178
+
166
179
  memoized_attributes[key.to_sym] = block
167
180
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
168
181
  def #{key}() self[:#{key}]; end
@@ -175,7 +188,7 @@ module Faraday
175
188
 
176
189
  def [](key)
177
190
  key = key.to_sym
178
- if method = self.class.memoized_attributes[key]
191
+ if (method = self.class.memoized_attributes[key])
179
192
  super(key) || (self[key] = instance_eval(&method))
180
193
  else
181
194
  super
@@ -183,7 +196,7 @@ module Faraday
183
196
  end
184
197
 
185
198
  def symbolized_key_set
186
- @symbolized_key_set ||= Set.new(keys.map { |k| k.to_sym })
199
+ @symbolized_key_set ||= Set.new(keys.map(&:to_sym))
187
200
  end
188
201
 
189
202
  def self.inherited(subclass)
@@ -194,180 +207,16 @@ module Faraday
194
207
 
195
208
  def self.fetch_error_class
196
209
  @fetch_error_class ||= if Object.const_defined?(:KeyError)
197
- ::KeyError
198
- else
199
- ::IndexError
200
- end
201
- end
202
- end
203
-
204
- class RequestOptions < Options.new(:params_encoder, :proxy, :bind,
205
- :timeout, :open_timeout, :write_timeout, :boundary, :oauth, :context)
206
-
207
- def []=(key, value)
208
- if key && key.to_sym == :proxy
209
- super(key, value ? ProxyOptions.from(value) : nil)
210
- else
211
- super(key, value)
212
- end
213
- end
214
- end
215
-
216
- class SSLOptions < Options.new(:verify, :ca_file, :ca_path, :verify_mode,
217
- :cert_store, :client_cert, :client_key, :certificate, :private_key, :verify_depth,
218
- :version, :min_version, :max_version)
219
-
220
- def verify?
221
- verify != false
222
- end
223
-
224
- def disable?
225
- !verify?
226
- end
227
- end
228
-
229
- class ProxyOptions < Options.new(:uri, :user, :password)
230
- extend Forwardable
231
- def_delegators :uri, :scheme, :scheme=, :host, :host=, :port, :port=, :path, :path=
232
-
233
- def self.from(value)
234
- case value
235
- when String
236
- value = {:uri => Utils.URI(value)}
237
- when URI
238
- value = {:uri => value}
239
- when Hash, Options
240
- if uri = value.delete(:uri)
241
- value[:uri] = Utils.URI(uri)
242
- end
243
- end
244
- super(value)
245
- end
246
-
247
- memoized(:user) { uri && uri.user && Utils.unescape(uri.user) }
248
- memoized(:password) { uri && uri.password && Utils.unescape(uri.password) }
249
- end
250
-
251
- class ConnectionOptions < Options.new(:request, :proxy, :ssl, :builder, :url,
252
- :parallel_manager, :params, :headers, :builder_class)
253
-
254
- options :request => RequestOptions, :ssl => SSLOptions
255
-
256
- memoized(:request) { self.class.options_for(:request).new }
257
-
258
- memoized(:ssl) { self.class.options_for(:ssl).new }
259
-
260
- memoized(:builder_class) { RackBuilder }
261
-
262
- def new_builder(block)
263
- builder_class.new(&block)
264
- end
265
- end
266
-
267
- class Env < Options.new(:method, :body, :url, :request, :request_headers,
268
- :ssl, :parallel_manager, :params, :response, :response_headers, :status,
269
- :reason_phrase)
270
-
271
- ContentLength = 'Content-Length'.freeze
272
- StatusesWithoutBody = Set.new [204, 304]
273
- SuccessfulStatuses = 200..299
274
-
275
- # A Set of HTTP verbs that typically send a body. If no body is set for
276
- # these requests, the Content-Length header is set to 0.
277
- MethodsWithBodies = Set.new [:post, :put, :patch, :options]
278
-
279
- options :request => RequestOptions,
280
- :request_headers => Utils::Headers, :response_headers => Utils::Headers
281
-
282
- extend Forwardable
283
-
284
- def_delegators :request, :params_encoder
285
-
286
- # Public
287
- def self.from(value)
288
- env = super(value)
289
- if value.respond_to?(:custom_members)
290
- env.custom_members.update(value.custom_members)
291
- end
292
- env
293
- end
294
-
295
- # Public
296
- def [](key)
297
- if in_member_set?(key)
298
- super(key)
299
- else
300
- custom_members[key]
301
- end
302
- end
303
-
304
- # Public
305
- def []=(key, value)
306
- if in_member_set?(key)
307
- super(key, value)
308
- else
309
- custom_members[key] = value
310
- end
311
- end
312
-
313
- # Public
314
- def success?
315
- SuccessfulStatuses.include?(status)
316
- end
317
-
318
- # Public
319
- def needs_body?
320
- !body && MethodsWithBodies.include?(method)
321
- end
322
-
323
- # Public
324
- def clear_body
325
- request_headers[ContentLength] = '0'
326
- self.body = ''
327
- end
328
-
329
- # Public
330
- def parse_body?
331
- !StatusesWithoutBody.include?(status)
332
- end
333
-
334
- # Public
335
- def parallel?
336
- !!parallel_manager
337
- end
338
-
339
- def inspect
340
- attrs = [nil]
341
- members.each do |mem|
342
- if value = send(mem)
343
- attrs << "@#{mem}=#{value.inspect}"
344
- end
345
- end
346
- if !custom_members.empty?
347
- attrs << "@custom=#{custom_members.inspect}"
348
- end
349
- %(#<#{self.class}#{attrs.join(" ")}>)
350
- end
351
-
352
- # Internal
353
- def custom_members
354
- @custom_members ||= {}
355
- end
356
-
357
- # Internal
358
- if members.first.is_a?(Symbol)
359
- def in_member_set?(key)
360
- self.class.member_set.include?(key.to_sym)
361
- end
362
- else
363
- def in_member_set?(key)
364
- self.class.member_set.include?(key.to_s)
365
- end
366
- end
367
-
368
- # Internal
369
- def self.member_set
370
- @member_set ||= Set.new(members)
210
+ ::KeyError
211
+ else
212
+ ::IndexError
213
+ end
371
214
  end
372
215
  end
373
216
  end
217
+
218
+ require 'faraday/options/request_options'
219
+ require 'faraday/options/ssl_options'
220
+ require 'faraday/options/proxy_options'
221
+ require 'faraday/options/connection_options'
222
+ require 'faraday/options/env'