faraday 1.9.0 → 2.4.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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +197 -3
  3. data/LICENSE.md +1 -1
  4. data/README.md +11 -9
  5. data/examples/client_spec.rb +41 -19
  6. data/examples/client_test.rb +48 -22
  7. data/lib/faraday/adapter/test.rb +37 -5
  8. data/lib/faraday/adapter.rb +2 -5
  9. data/lib/faraday/connection.rb +12 -93
  10. data/lib/faraday/encoders/nested_params_encoder.rb +13 -6
  11. data/lib/faraday/error.rb +3 -2
  12. data/lib/faraday/logging/formatter.rb +1 -0
  13. data/lib/faraday/middleware.rb +0 -1
  14. data/lib/faraday/middleware_registry.rb +17 -63
  15. data/lib/faraday/options/ssl_options.rb +11 -1
  16. data/lib/faraday/options.rb +3 -3
  17. data/lib/faraday/rack_builder.rb +23 -20
  18. data/lib/faraday/request/authorization.rb +28 -41
  19. data/lib/faraday/request/instrumentation.rb +2 -0
  20. data/lib/faraday/request/json.rb +55 -0
  21. data/lib/faraday/request/url_encoded.rb +5 -1
  22. data/lib/faraday/request.rb +11 -31
  23. data/lib/faraday/response/json.rb +54 -0
  24. data/lib/faraday/response/logger.rb +4 -4
  25. data/lib/faraday/response/raise_error.rb +9 -1
  26. data/lib/faraday/response.rb +8 -19
  27. data/lib/faraday/utils/headers.rb +1 -1
  28. data/lib/faraday/utils.rb +10 -5
  29. data/lib/faraday/version.rb +1 -1
  30. data/lib/faraday.rb +10 -42
  31. data/spec/faraday/adapter/test_spec.rb +36 -0
  32. data/spec/faraday/connection_spec.rb +142 -85
  33. data/spec/faraday/middleware_registry_spec.rb +31 -0
  34. data/spec/faraday/options/env_spec.rb +8 -2
  35. data/spec/faraday/params_encoders/nested_spec.rb +8 -0
  36. data/spec/faraday/rack_builder_spec.rb +26 -54
  37. data/spec/faraday/request/authorization_spec.rb +19 -32
  38. data/spec/faraday/request/json_spec.rb +111 -0
  39. data/spec/faraday/request/url_encoded_spec.rb +12 -2
  40. data/spec/faraday/request_spec.rb +5 -15
  41. data/spec/faraday/response/json_spec.rb +117 -0
  42. data/spec/faraday/response/raise_error_spec.rb +7 -4
  43. data/spec/faraday/utils/headers_spec.rb +2 -2
  44. data/spec/faraday/utils_spec.rb +63 -1
  45. data/spec/support/fake_safe_buffer.rb +1 -1
  46. data/spec/support/helper_methods.rb +0 -37
  47. data/spec/support/shared_examples/adapter.rb +1 -1
  48. data/spec/support/shared_examples/request_method.rb +5 -18
  49. metadata +11 -148
  50. data/lib/faraday/adapter/typhoeus.rb +0 -15
  51. data/lib/faraday/autoload.rb +0 -87
  52. data/lib/faraday/dependency_loader.rb +0 -37
  53. data/lib/faraday/request/basic_authentication.rb +0 -20
  54. data/lib/faraday/request/token_authentication.rb +0 -20
  55. data/spec/faraday/adapter/em_http_spec.rb +0 -49
  56. data/spec/faraday/adapter/em_synchrony_spec.rb +0 -18
  57. data/spec/faraday/adapter/excon_spec.rb +0 -49
  58. data/spec/faraday/adapter/httpclient_spec.rb +0 -73
  59. data/spec/faraday/adapter/net_http_spec.rb +0 -64
  60. data/spec/faraday/adapter/patron_spec.rb +0 -18
  61. data/spec/faraday/adapter/rack_spec.rb +0 -8
  62. data/spec/faraday/adapter/typhoeus_spec.rb +0 -7
  63. data/spec/faraday/composite_read_io_spec.rb +0 -80
  64. data/spec/faraday/response/middleware_spec.rb +0 -68
  65. data/spec/support/webmock_rack_app.rb +0 -67
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'multipart_parser/reader'
4
-
5
3
  module Faraday
6
4
  module HelperMethods
7
5
  def self.included(base)
@@ -86,41 +84,6 @@ module Faraday
86
84
  end
87
85
  end
88
86
 
89
- def multipart_file
90
- Faraday::FilePart.new(__FILE__, 'text/x-ruby')
91
- end
92
-
93
- # parse boundary out of a Content-Type header like:
94
- # Content-Type: multipart/form-data; boundary=gc0p4Jq0M2Yt08jU534c0p
95
- def parse_multipart_boundary(ctype)
96
- MultipartParser::Reader.extract_boundary_value(ctype)
97
- end
98
-
99
- # parse a multipart MIME message, returning a hash of any multipart errors
100
- def parse_multipart(boundary, body)
101
- reader = MultipartParser::Reader.new(boundary)
102
- result = { errors: [], parts: [] }
103
- def result.part(name)
104
- hash = self[:parts].detect { |h| h[:part].name == name }
105
- [hash[:part], hash[:body].join]
106
- end
107
-
108
- reader.on_part do |part|
109
- result[:parts] << thispart = {
110
- part: part,
111
- body: []
112
- }
113
- part.on_data do |chunk|
114
- thispart[:body] << chunk
115
- end
116
- end
117
- reader.on_error do |msg|
118
- result[:errors] << msg
119
- end
120
- reader.write(body)
121
- result
122
- end
123
-
124
87
  def method_with_body?(method)
125
88
  self.class.method_with_body?(method)
126
89
  end
@@ -38,9 +38,9 @@ shared_examples 'adapter examples' do |**options|
38
38
  let(:conn) do
39
39
  conn_options[:ssl] ||= {}
40
40
  conn_options[:ssl][:ca_file] ||= ENV['SSL_FILE']
41
+ conn_options[:ssl][:verify_hostname] ||= ENV['SSL_VERIFY_HOSTNAME'] == 'yes'
41
42
 
42
43
  Faraday.new(remote, conn_options) do |conn|
43
- conn.request :multipart
44
44
  conn.request :url_encoded
45
45
  conn.response :raise_error
46
46
  conn.adapter described_class, *adapter_options
@@ -79,7 +79,7 @@ shared_examples 'a request method' do |http_method|
79
79
 
80
80
  on_feature :request_body_on_query_methods do
81
81
  it 'sends request body' do
82
- request_stub.with(Hash[:body, 'test'])
82
+ request_stub.with({ body: 'test' })
83
83
  res = if query_or_body == :body
84
84
  conn.public_send(http_method, '/', 'test')
85
85
  else
@@ -93,7 +93,7 @@ shared_examples 'a request method' do |http_method|
93
93
 
94
94
  it 'sends url encoded parameters' do
95
95
  payload = { name: 'zack' }
96
- request_stub.with(Hash[query_or_body, payload])
96
+ request_stub.with({ query_or_body => payload })
97
97
  res = conn.public_send(http_method, '/', payload)
98
98
  if query_or_body == :query
99
99
  expect(res.env.request_body).to be_nil
@@ -104,7 +104,7 @@ shared_examples 'a request method' do |http_method|
104
104
 
105
105
  it 'sends url encoded nested parameters' do
106
106
  payload = { name: { first: 'zack' } }
107
- request_stub.with(Hash[query_or_body, payload])
107
+ request_stub.with({ query_or_body => payload })
108
108
  conn.public_send(http_method, '/', payload)
109
109
  end
110
110
 
@@ -126,19 +126,6 @@ shared_examples 'a request method' do |http_method|
126
126
  expect { conn.public_send(http_method, '/') }.to raise_error(exc)
127
127
  end
128
128
 
129
- # Can't send files on get, head and delete methods
130
- if method_with_body?(http_method)
131
- it 'sends files' do
132
- payload = { uploaded_file: multipart_file }
133
- request_stub.with(headers: { 'Content-Type' => %r{\Amultipart/form-data} }) do |request|
134
- # WebMock does not support matching body for multipart/form-data requests yet :(
135
- # https://github.com/bblimke/webmock/issues/623
136
- request.body.include?('RubyMultipartPost')
137
- end
138
- conn.public_send(http_method, '/', payload)
139
- end
140
- end
141
-
142
129
  on_feature :reason_phrase_parse do
143
130
  it 'parses the reason phrase' do
144
131
  request_stub.to_return(status: [200, 'OK'])
@@ -199,11 +186,11 @@ shared_examples 'a request method' do |http_method|
199
186
  @payload2 = { b: '2' }
200
187
 
201
188
  request_stub
202
- .with(Hash[query_or_body, @payload1])
189
+ .with({ query_or_body => @payload1 })
203
190
  .to_return(body: @payload1.to_json)
204
191
 
205
192
  stub_request(http_method, remote)
206
- .with(Hash[query_or_body, @payload2])
193
+ .with({ query_or_body => @payload2 })
207
194
  .to_return(body: @payload2.to_json)
208
195
 
209
196
  conn.in_parallel do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - "@technoweenie"
@@ -10,148 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-01-06 00:00:00.000000000 Z
13
+ date: 2022-07-28 00:00:00.000000000 Z
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: faraday-em_http
17
- requirement: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - "~>"
20
- - !ruby/object:Gem::Version
21
- version: '1.0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- requirements:
26
- - - "~>"
27
- - !ruby/object:Gem::Version
28
- version: '1.0'
29
- - !ruby/object:Gem::Dependency
30
- name: faraday-em_synchrony
31
- requirement: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - "~>"
34
- - !ruby/object:Gem::Version
35
- version: '1.0'
36
- type: :runtime
37
- prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: '1.0'
43
- - !ruby/object:Gem::Dependency
44
- name: faraday-excon
45
- requirement: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '1.1'
50
- type: :runtime
51
- prerelease: false
52
- version_requirements: !ruby/object:Gem::Requirement
53
- requirements:
54
- - - "~>"
55
- - !ruby/object:Gem::Version
56
- version: '1.1'
57
- - !ruby/object:Gem::Dependency
58
- name: faraday-httpclient
59
- requirement: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - "<"
62
- - !ruby/object:Gem::Version
63
- version: '3'
64
- type: :runtime
65
- prerelease: false
66
- version_requirements: !ruby/object:Gem::Requirement
67
- requirements:
68
- - - "<"
69
- - !ruby/object:Gem::Version
70
- version: '3'
71
- - !ruby/object:Gem::Dependency
72
- name: faraday-multipart
73
- requirement: !ruby/object:Gem::Requirement
74
- requirements:
75
- - - "~>"
76
- - !ruby/object:Gem::Version
77
- version: '1.0'
78
- type: :runtime
79
- prerelease: false
80
- version_requirements: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - "~>"
83
- - !ruby/object:Gem::Version
84
- version: '1.0'
85
15
  - !ruby/object:Gem::Dependency
86
16
  name: faraday-net_http
87
- requirement: !ruby/object:Gem::Requirement
88
- requirements:
89
- - - "<"
90
- - !ruby/object:Gem::Version
91
- version: '3'
92
- type: :runtime
93
- prerelease: false
94
- version_requirements: !ruby/object:Gem::Requirement
95
- requirements:
96
- - - "<"
97
- - !ruby/object:Gem::Version
98
- version: '3'
99
- - !ruby/object:Gem::Dependency
100
- name: faraday-net_http_persistent
101
- requirement: !ruby/object:Gem::Requirement
102
- requirements:
103
- - - "<"
104
- - !ruby/object:Gem::Version
105
- version: '3'
106
- type: :runtime
107
- prerelease: false
108
- version_requirements: !ruby/object:Gem::Requirement
109
- requirements:
110
- - - "<"
111
- - !ruby/object:Gem::Version
112
- version: '3'
113
- - !ruby/object:Gem::Dependency
114
- name: faraday-patron
115
- requirement: !ruby/object:Gem::Requirement
116
- requirements:
117
- - - "<"
118
- - !ruby/object:Gem::Version
119
- version: '3'
120
- type: :runtime
121
- prerelease: false
122
- version_requirements: !ruby/object:Gem::Requirement
123
- requirements:
124
- - - "<"
125
- - !ruby/object:Gem::Version
126
- version: '3'
127
- - !ruby/object:Gem::Dependency
128
- name: faraday-rack
129
- requirement: !ruby/object:Gem::Requirement
130
- requirements:
131
- - - "~>"
132
- - !ruby/object:Gem::Version
133
- version: '1.0'
134
- type: :runtime
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- requirements:
138
- - - "~>"
139
- - !ruby/object:Gem::Version
140
- version: '1.0'
141
- - !ruby/object:Gem::Dependency
142
- name: faraday-retry
143
17
  requirement: !ruby/object:Gem::Requirement
144
18
  requirements:
145
19
  - - "~>"
146
20
  - !ruby/object:Gem::Version
147
- version: '1.0'
21
+ version: '2.0'
148
22
  type: :runtime
149
23
  prerelease: false
150
24
  version_requirements: !ruby/object:Gem::Requirement
151
25
  requirements:
152
26
  - - "~>"
153
27
  - !ruby/object:Gem::Version
154
- version: '1.0'
28
+ version: '2.0'
155
29
  - !ruby/object:Gem::Dependency
156
30
  name: ruby2_keywords
157
31
  requirement: !ruby/object:Gem::Requirement
@@ -181,11 +55,8 @@ files:
181
55
  - lib/faraday.rb
182
56
  - lib/faraday/adapter.rb
183
57
  - lib/faraday/adapter/test.rb
184
- - lib/faraday/adapter/typhoeus.rb
185
58
  - lib/faraday/adapter_registry.rb
186
- - lib/faraday/autoload.rb
187
59
  - lib/faraday/connection.rb
188
- - lib/faraday/dependency_loader.rb
189
60
  - lib/faraday/encoders/flat_params_encoder.rb
190
61
  - lib/faraday/encoders/nested_params_encoder.rb
191
62
  - lib/faraday/error.rb
@@ -203,11 +74,11 @@ files:
203
74
  - lib/faraday/rack_builder.rb
204
75
  - lib/faraday/request.rb
205
76
  - lib/faraday/request/authorization.rb
206
- - lib/faraday/request/basic_authentication.rb
207
77
  - lib/faraday/request/instrumentation.rb
208
- - lib/faraday/request/token_authentication.rb
78
+ - lib/faraday/request/json.rb
209
79
  - lib/faraday/request/url_encoded.rb
210
80
  - lib/faraday/response.rb
81
+ - lib/faraday/response/json.rb
211
82
  - lib/faraday/response/logger.rb
212
83
  - lib/faraday/response/raise_error.rb
213
84
  - lib/faraday/utils.rb
@@ -215,20 +86,12 @@ files:
215
86
  - lib/faraday/utils/params_hash.rb
216
87
  - lib/faraday/version.rb
217
88
  - spec/external_adapters/faraday_specs_setup.rb
218
- - spec/faraday/adapter/em_http_spec.rb
219
- - spec/faraday/adapter/em_synchrony_spec.rb
220
- - spec/faraday/adapter/excon_spec.rb
221
- - spec/faraday/adapter/httpclient_spec.rb
222
- - spec/faraday/adapter/net_http_spec.rb
223
- - spec/faraday/adapter/patron_spec.rb
224
- - spec/faraday/adapter/rack_spec.rb
225
89
  - spec/faraday/adapter/test_spec.rb
226
- - spec/faraday/adapter/typhoeus_spec.rb
227
90
  - spec/faraday/adapter_registry_spec.rb
228
91
  - spec/faraday/adapter_spec.rb
229
- - spec/faraday/composite_read_io_spec.rb
230
92
  - spec/faraday/connection_spec.rb
231
93
  - spec/faraday/error_spec.rb
94
+ - spec/faraday/middleware_registry_spec.rb
232
95
  - spec/faraday/middleware_spec.rb
233
96
  - spec/faraday/options/env_spec.rb
234
97
  - spec/faraday/options/options_spec.rb
@@ -239,10 +102,11 @@ files:
239
102
  - spec/faraday/rack_builder_spec.rb
240
103
  - spec/faraday/request/authorization_spec.rb
241
104
  - spec/faraday/request/instrumentation_spec.rb
105
+ - spec/faraday/request/json_spec.rb
242
106
  - spec/faraday/request/url_encoded_spec.rb
243
107
  - spec/faraday/request_spec.rb
108
+ - spec/faraday/response/json_spec.rb
244
109
  - spec/faraday/response/logger_spec.rb
245
- - spec/faraday/response/middleware_spec.rb
246
110
  - spec/faraday/response/raise_error_spec.rb
247
111
  - spec/faraday/response_spec.rb
248
112
  - spec/faraday/utils/headers_spec.rb
@@ -256,13 +120,12 @@ files:
256
120
  - spec/support/shared_examples/params_encoder.rb
257
121
  - spec/support/shared_examples/request_method.rb
258
122
  - spec/support/streaming_response_checker.rb
259
- - spec/support/webmock_rack_app.rb
260
123
  homepage: https://lostisland.github.io/faraday
261
124
  licenses:
262
125
  - MIT
263
126
  metadata:
264
127
  homepage_uri: https://lostisland.github.io/faraday
265
- changelog_uri: https://github.com/lostisland/faraday/releases/tag/v1.9.0
128
+ changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.4.0
266
129
  source_code_uri: https://github.com/lostisland/faraday
267
130
  bug_tracker_uri: https://github.com/lostisland/faraday/issues
268
131
  post_install_message:
@@ -281,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
144
  - !ruby/object:Gem::Version
282
145
  version: '0'
283
146
  requirements: []
284
- rubygems_version: 3.0.3.1
147
+ rubygems_version: 3.1.6
285
148
  signing_key:
286
149
  specification_version: 4
287
150
  summary: HTTP/REST API client library.
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Faraday
4
- class Adapter
5
- # Typhoeus adapter. This class is just a stub, the real adapter is in
6
- # https://github.com/typhoeus/typhoeus/blob/master/lib/typhoeus/adapters/faraday.rb
7
- class Typhoeus < Faraday::Adapter
8
- # Needs to define this method in order to support Typhoeus <= 1.3.0
9
- def call; end
10
-
11
- dependency 'typhoeus'
12
- dependency 'typhoeus/adapters/faraday'
13
- end
14
- end
15
- end
@@ -1,87 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Faraday
4
- # Adds the ability for other modules to manage autoloadable
5
- # constants.
6
- #
7
- # @api private
8
- module AutoloadHelper
9
- # Registers the constants to be auto loaded.
10
- #
11
- # @param prefix [String] The require prefix. If the path is inside Faraday,
12
- # then it will be prefixed with the root path of this loaded
13
- # Faraday version.
14
- # @param options [{ Symbol => String }] library names.
15
- #
16
- # @example
17
- #
18
- # Faraday.autoload_all 'faraday/foo',
19
- # Bar: 'bar'
20
- #
21
- # # requires faraday/foo/bar to load Faraday::Bar.
22
- # Faraday::Bar
23
- #
24
- # @return [void]
25
- def autoload_all(prefix, options)
26
- if prefix.match? %r{^faraday(/|$)}i
27
- prefix = File.join(Faraday.root_path, prefix)
28
- end
29
-
30
- options.each do |const_name, path|
31
- autoload const_name, File.join(prefix, path)
32
- end
33
- end
34
-
35
- # Loads each autoloaded constant. If thread safety is a concern,
36
- # wrap this in a Mutex.
37
- #
38
- # @return [void]
39
- def load_autoloaded_constants
40
- constants.each do |const|
41
- const_get(const) if autoload?(const)
42
- end
43
- end
44
-
45
- # Filters the module's contents with those that have been already
46
- # autoloaded.
47
- #
48
- # @return [Array<Class, Module>]
49
- def all_loaded_constants
50
- constants
51
- .map { |c| const_get(c) }
52
- .select { |a| a.respond_to?(:loaded?) && a.loaded? }
53
- end
54
- end
55
-
56
- # Adapter is the base class for all Faraday adapters.
57
- # @see lib/faraday/adapter.rb Original class location
58
- class Adapter
59
- extend AutoloadHelper
60
- autoload_all 'faraday/adapter',
61
- Typhoeus: 'typhoeus',
62
- Test: 'test'
63
- end
64
-
65
- # Request represents a single HTTP request for a Faraday adapter to make.
66
- # @see lib/faraday/request.rb Original class location
67
- class Request
68
- extend AutoloadHelper
69
- autoload_all 'faraday/request',
70
- UrlEncoded: 'url_encoded',
71
- Multipart: 'multipart',
72
- Retry: 'retry',
73
- Authorization: 'authorization',
74
- BasicAuthentication: 'basic_authentication',
75
- TokenAuthentication: 'token_authentication',
76
- Instrumentation: 'instrumentation'
77
- end
78
-
79
- # Response represents the returned value of a sent Faraday request.
80
- # @see lib/faraday/response.rb Original class location
81
- class Response
82
- extend AutoloadHelper
83
- autoload_all 'faraday/response',
84
- RaiseError: 'raise_error',
85
- Logger: 'logger'
86
- end
87
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Faraday
4
- # DependencyLoader helps Faraday adapters and middleware load dependencies.
5
- module DependencyLoader
6
- attr_reader :load_error
7
-
8
- # Executes a block which should try to require and reference dependent
9
- # libraries
10
- def dependency(lib = nil)
11
- lib ? require(lib) : yield
12
- rescue LoadError, NameError => e
13
- self.load_error = e
14
- end
15
-
16
- def new(*)
17
- unless loaded?
18
- raise "missing dependency for #{self}: #{load_error.message}"
19
- end
20
-
21
- super
22
- end
23
-
24
- def loaded?
25
- load_error.nil?
26
- end
27
-
28
- def inherited(subclass)
29
- super
30
- subclass.send(:load_error=, load_error)
31
- end
32
-
33
- private
34
-
35
- attr_writer :load_error
36
- end
37
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'base64'
4
-
5
- module Faraday
6
- class Request
7
- # Authorization middleware for Basic Authentication.
8
- class BasicAuthentication < load_middleware(:authorization)
9
- # @param login [String]
10
- # @param pass [String]
11
- #
12
- # @return [String] a Basic Authentication header line
13
- def self.header(login, pass)
14
- value = Base64.encode64([login, pass].join(':'))
15
- value.delete!("\n")
16
- super(:Basic, value)
17
- end
18
- end
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Faraday
4
- class Request
5
- # TokenAuthentication is a middleware that adds a 'Token' header to a
6
- # Faraday request.
7
- class TokenAuthentication < load_middleware(:authorization)
8
- # Public
9
- def self.header(token, options = nil)
10
- options ||= {}
11
- options[:token] = token
12
- super(:Token, options)
13
- end
14
-
15
- def initialize(app, token, options = nil)
16
- super(app, token, options)
17
- end
18
- end
19
- end
20
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- unless defined?(JRUBY_VERSION)
4
- RSpec.describe Faraday::Adapter::EMHttp do
5
- features :request_body_on_query_methods, :reason_phrase_parse, :trace_method,
6
- :skip_response_body_on_head, :parallel, :local_socket_binding
7
-
8
- it_behaves_like 'an adapter'
9
-
10
- it 'allows to provide adapter specific configs' do
11
- url = URI('https://example.com:1234')
12
- adapter = described_class.new nil, inactivity_timeout: 20
13
- req = adapter.create_request(url: url, request: {})
14
-
15
- expect(req.connopts.inactivity_timeout).to eq(20)
16
- end
17
-
18
- context 'Options' do
19
- let(:request) { Faraday::RequestOptions.new }
20
- let(:env) { { request: request } }
21
- let(:options) { {} }
22
- let(:adapter) { Faraday::Adapter::EMHttp.new }
23
-
24
- it 'configures timeout' do
25
- request.timeout = 5
26
- adapter.configure_timeout(options, env)
27
- expect(options[:inactivity_timeout]).to eq(5)
28
- expect(options[:connect_timeout]).to eq(5)
29
- end
30
-
31
- it 'configures timeout and open_timeout' do
32
- request.timeout = 5
33
- request.open_timeout = 1
34
- adapter.configure_timeout(options, env)
35
- expect(options[:inactivity_timeout]).to eq(5)
36
- expect(options[:connect_timeout]).to eq(1)
37
- end
38
-
39
- it 'configures all timeout settings' do
40
- request.timeout = 5
41
- request.read_timeout = 3
42
- request.open_timeout = 1
43
- adapter.configure_timeout(options, env)
44
- expect(options[:inactivity_timeout]).to eq(3)
45
- expect(options[:connect_timeout]).to eq(1)
46
- end
47
- end
48
- end
49
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- unless defined?(JRUBY_VERSION)
4
- RSpec.describe Faraday::Adapter::EMSynchrony do
5
- features :request_body_on_query_methods, :reason_phrase_parse,
6
- :skip_response_body_on_head, :parallel, :local_socket_binding
7
-
8
- it_behaves_like 'an adapter'
9
-
10
- it 'allows to provide adapter specific configs' do
11
- url = URI('https://example.com:1234')
12
- adapter = described_class.new nil, inactivity_timeout: 20
13
- req = adapter.create_request(url: url, request: {})
14
-
15
- expect(req.connopts.inactivity_timeout).to eq(20)
16
- end
17
- end
18
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Faraday::Adapter::Excon do
4
- features :request_body_on_query_methods, :reason_phrase_parse, :trace_method
5
-
6
- it_behaves_like 'an adapter'
7
-
8
- it 'allows to provide adapter specific configs' do
9
- url = URI('https://example.com:1234')
10
-
11
- adapter = described_class.new(nil, debug_request: true)
12
-
13
- conn = adapter.build_connection(url: url)
14
-
15
- expect(conn.data[:debug_request]).to be_truthy
16
- end
17
-
18
- context 'config' do
19
- let(:adapter) { Faraday::Adapter::Excon.new }
20
- let(:request) { Faraday::RequestOptions.new }
21
- let(:uri) { URI.parse('https://example.com') }
22
- let(:env) { { request: request, url: uri } }
23
-
24
- it 'sets timeout' do
25
- request.timeout = 5
26
- options = adapter.send(:opts_from_env, env)
27
- expect(options[:read_timeout]).to eq(5)
28
- expect(options[:write_timeout]).to eq(5)
29
- expect(options[:connect_timeout]).to eq(5)
30
- end
31
-
32
- it 'sets timeout and open_timeout' do
33
- request.timeout = 5
34
- request.open_timeout = 3
35
- options = adapter.send(:opts_from_env, env)
36
- expect(options[:read_timeout]).to eq(5)
37
- expect(options[:write_timeout]).to eq(5)
38
- expect(options[:connect_timeout]).to eq(3)
39
- end
40
-
41
- it 'sets open_timeout' do
42
- request.open_timeout = 3
43
- options = adapter.send(:opts_from_env, env)
44
- expect(options[:read_timeout]).to eq(nil)
45
- expect(options[:write_timeout]).to eq(nil)
46
- expect(options[:connect_timeout]).to eq(3)
47
- end
48
- end
49
- end