faraday 1.9.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
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