faraday 1.4.1 → 2.7.4

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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +197 -3
  3. data/LICENSE.md +1 -1
  4. data/README.md +18 -16
  5. data/examples/client_spec.rb +67 -13
  6. data/examples/client_test.rb +80 -15
  7. data/lib/faraday/adapter/test.rb +117 -52
  8. data/lib/faraday/adapter.rb +5 -14
  9. data/lib/faraday/connection.rb +64 -119
  10. data/lib/faraday/encoders/nested_params_encoder.rb +13 -6
  11. data/lib/faraday/error.rb +3 -8
  12. data/lib/faraday/logging/formatter.rb +19 -2
  13. data/lib/faraday/middleware.rb +3 -1
  14. data/lib/faraday/middleware_registry.rb +17 -63
  15. data/lib/faraday/options/env.rb +31 -7
  16. data/lib/faraday/options/proxy_options.rb +4 -0
  17. data/lib/faraday/options/ssl_options.rb +11 -1
  18. data/lib/faraday/options.rb +3 -3
  19. data/lib/faraday/rack_builder.rb +23 -20
  20. data/lib/faraday/request/authorization.rb +37 -38
  21. data/lib/faraday/request/instrumentation.rb +2 -0
  22. data/lib/faraday/request/json.rb +55 -0
  23. data/lib/faraday/request/url_encoded.rb +5 -1
  24. data/lib/faraday/request.rb +12 -32
  25. data/lib/faraday/response/json.rb +54 -0
  26. data/lib/faraday/response/logger.rb +8 -4
  27. data/lib/faraday/response/raise_error.rb +9 -1
  28. data/lib/faraday/response.rb +10 -20
  29. data/lib/faraday/utils/headers.rb +7 -2
  30. data/lib/faraday/utils.rb +10 -5
  31. data/lib/faraday/version.rb +1 -1
  32. data/lib/faraday.rb +10 -31
  33. data/spec/faraday/adapter/test_spec.rb +182 -0
  34. data/spec/faraday/connection_spec.rb +177 -90
  35. data/spec/faraday/middleware_registry_spec.rb +31 -0
  36. data/spec/faraday/middleware_spec.rb +18 -0
  37. data/spec/faraday/options/env_spec.rb +8 -2
  38. data/spec/faraday/options/proxy_options_spec.rb +7 -0
  39. data/spec/faraday/params_encoders/nested_spec.rb +8 -0
  40. data/spec/faraday/rack_builder_spec.rb +26 -54
  41. data/spec/faraday/request/authorization_spec.rb +54 -24
  42. data/spec/faraday/request/instrumentation_spec.rb +5 -7
  43. data/spec/faraday/request/json_spec.rb +111 -0
  44. data/spec/faraday/request/url_encoded_spec.rb +12 -2
  45. data/spec/faraday/request_spec.rb +5 -15
  46. data/spec/faraday/response/json_spec.rb +117 -0
  47. data/spec/faraday/response/logger_spec.rb +28 -0
  48. data/spec/faraday/response/raise_error_spec.rb +7 -4
  49. data/spec/faraday/response_spec.rb +3 -1
  50. data/spec/faraday/utils/headers_spec.rb +22 -4
  51. data/spec/faraday/utils_spec.rb +63 -1
  52. data/spec/support/fake_safe_buffer.rb +1 -1
  53. data/spec/support/helper_methods.rb +0 -37
  54. data/spec/support/shared_examples/adapter.rb +2 -2
  55. data/spec/support/shared_examples/request_method.rb +22 -21
  56. metadata +14 -80
  57. data/lib/faraday/adapter/em_http.rb +0 -289
  58. data/lib/faraday/adapter/em_http_ssl_patch.rb +0 -62
  59. data/lib/faraday/adapter/em_synchrony/parallel_manager.rb +0 -69
  60. data/lib/faraday/adapter/em_synchrony.rb +0 -153
  61. data/lib/faraday/adapter/httpclient.rb +0 -152
  62. data/lib/faraday/adapter/patron.rb +0 -132
  63. data/lib/faraday/adapter/rack.rb +0 -75
  64. data/lib/faraday/adapter/typhoeus.rb +0 -15
  65. data/lib/faraday/autoload.rb +0 -92
  66. data/lib/faraday/dependency_loader.rb +0 -37
  67. data/lib/faraday/file_part.rb +0 -128
  68. data/lib/faraday/param_part.rb +0 -53
  69. data/lib/faraday/request/basic_authentication.rb +0 -20
  70. data/lib/faraday/request/multipart.rb +0 -106
  71. data/lib/faraday/request/retry.rb +0 -239
  72. data/lib/faraday/request/token_authentication.rb +0 -20
  73. data/spec/faraday/adapter/em_http_spec.rb +0 -47
  74. data/spec/faraday/adapter/em_synchrony_spec.rb +0 -16
  75. data/spec/faraday/adapter/excon_spec.rb +0 -49
  76. data/spec/faraday/adapter/httpclient_spec.rb +0 -73
  77. data/spec/faraday/adapter/net_http_spec.rb +0 -64
  78. data/spec/faraday/adapter/patron_spec.rb +0 -18
  79. data/spec/faraday/adapter/rack_spec.rb +0 -8
  80. data/spec/faraday/adapter/typhoeus_spec.rb +0 -7
  81. data/spec/faraday/composite_read_io_spec.rb +0 -80
  82. data/spec/faraday/request/multipart_spec.rb +0 -302
  83. data/spec/faraday/request/retry_spec.rb +0 -242
  84. data/spec/faraday/response/middleware_spec.rb +0 -68
  85. data/spec/support/webmock_rack_app.rb +0 -68
@@ -139,7 +139,7 @@ RSpec.describe Faraday::Response::RaiseError do
139
139
  Faraday.new do |b|
140
140
  b.response :raise_error
141
141
  b.adapter :test do |stub|
142
- stub.post('request?full=true', request_body, request_headers) do
142
+ stub.post(url, request_body, request_headers) do
143
143
  [400, { 'X-Reason' => 'because' }, 'keep looking']
144
144
  end
145
145
  end
@@ -147,11 +147,13 @@ RSpec.describe Faraday::Response::RaiseError do
147
147
  end
148
148
  let(:request_body) { JSON.generate({ 'item' => 'sth' }) }
149
149
  let(:request_headers) { { 'Authorization' => 'Basic 123' } }
150
+ let(:url_path) { 'request' }
151
+ let(:query_params) { 'full=true' }
152
+ let(:url) { "#{url_path}?#{query_params}" }
150
153
 
151
154
  subject(:perform_request) do
152
- conn.post 'request' do |req|
155
+ conn.post url do |req|
153
156
  req.headers['Authorization'] = 'Basic 123'
154
- req.params[:full] = true
155
157
  req.body = request_body
156
158
  end
157
159
  end
@@ -159,7 +161,8 @@ RSpec.describe Faraday::Response::RaiseError do
159
161
  it 'returns the request info in the exception' do
160
162
  expect { perform_request }.to raise_error(Faraday::BadRequestError) do |ex|
161
163
  expect(ex.response[:request][:method]).to eq(:post)
162
- expect(ex.response[:request][:url_path]).to eq('/request')
164
+ expect(ex.response[:request][:url]).to eq(URI("http:/#{url}"))
165
+ expect(ex.response[:request][:url_path]).to eq("/#{url_path}")
163
166
  expect(ex.response[:request][:params]).to eq({ 'full' => 'true' })
164
167
  expect(ex.response[:request][:headers]).to match(a_hash_including(request_headers))
165
168
  expect(ex.response[:request][:body]).to eq(request_body)
@@ -4,7 +4,7 @@ RSpec.describe Faraday::Response do
4
4
  subject { Faraday::Response.new(env) }
5
5
 
6
6
  let(:env) do
7
- Faraday::Env.from(status: 404, body: 'yikes',
7
+ Faraday::Env.from(status: 404, body: 'yikes', url: Faraday::Utils.URI('https://lostisland.github.io/faraday'),
8
8
  response_headers: { 'Content-Type' => 'text/plain' })
9
9
  end
10
10
 
@@ -30,6 +30,7 @@ RSpec.describe Faraday::Response do
30
30
  it { expect(hash[:status]).to eq(subject.status) }
31
31
  it { expect(hash[:response_headers]).to eq(subject.headers) }
32
32
  it { expect(hash[:body]).to eq(subject.body) }
33
+ it { expect(hash[:url]).to eq(subject.env.url) }
33
34
  end
34
35
 
35
36
  describe 'marshal serialization support' do
@@ -45,6 +46,7 @@ RSpec.describe Faraday::Response do
45
46
  it { expect(loaded.env[:body]).to eq(env[:body]) }
46
47
  it { expect(loaded.env[:response_headers]).to eq(env[:response_headers]) }
47
48
  it { expect(loaded.env[:status]).to eq(env[:status]) }
49
+ it { expect(loaded.env[:url]).to eq(env[:url]) }
48
50
  end
49
51
 
50
52
  describe '#on_complete' do
@@ -57,26 +57,44 @@ RSpec.describe Faraday::Utils::Headers do
57
57
  end
58
58
 
59
59
  describe '#parse' do
60
- before { subject.parse(headers) }
61
-
62
60
  context 'when response headers leave http status line out' do
63
61
  let(:headers) { "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n" }
64
62
 
63
+ before { subject.parse(headers) }
64
+
65
65
  it { expect(subject.keys).to eq(%w[Content-Type]) }
66
66
  it { expect(subject['Content-Type']).to eq('text/html') }
67
67
  it { expect(subject['content-type']).to eq('text/html') }
68
68
  end
69
69
 
70
70
  context 'when response headers values include a colon' do
71
- let(:headers) { "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nLocation: http://sushi.com/\r\n\r\n" }
71
+ let(:headers) { "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nLocation: http://httpbingo.org/\r\n\r\n" }
72
72
 
73
- it { expect(subject['location']).to eq('http://sushi.com/') }
73
+ before { subject.parse(headers) }
74
+
75
+ it { expect(subject['location']).to eq('http://httpbingo.org/') }
74
76
  end
75
77
 
76
78
  context 'when response headers include a blank line' do
77
79
  let(:headers) { "HTTP/1.1 200 OK\r\n\r\nContent-Type: text/html\r\n\r\n" }
78
80
 
81
+ before { subject.parse(headers) }
82
+
79
83
  it { expect(subject['content-type']).to eq('text/html') }
80
84
  end
85
+
86
+ context 'when response headers include already stored keys' do
87
+ let(:headers) { "HTTP/1.1 200 OK\r\nX-Numbers: 123\r\n\r\n" }
88
+
89
+ before do
90
+ h = subject
91
+ h[:x_numbers] = 8
92
+ h.parse(headers)
93
+ end
94
+
95
+ it do
96
+ expect(subject[:x_numbers]).to eq('8, 123')
97
+ end
98
+ end
81
99
  end
82
100
  end
@@ -4,7 +4,7 @@ RSpec.describe Faraday::Utils do
4
4
  describe 'headers parsing' do
5
5
  let(:multi_response_headers) do
6
6
  "HTTP/1.x 500 OK\r\nContent-Type: text/html; charset=UTF-8\r\n" \
7
- "HTTP/1.x 200 OK\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n"
7
+ "HTTP/1.x 200 OK\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n"
8
8
  end
9
9
 
10
10
  it 'parse headers for aggregated responses' do
@@ -53,4 +53,66 @@ RSpec.describe Faraday::Utils do
53
53
  expect(headers).not_to have_key('authorization')
54
54
  end
55
55
  end
56
+
57
+ describe '.deep_merge!' do
58
+ let(:connection_options) { Faraday::ConnectionOptions.new }
59
+ let(:url) do
60
+ {
61
+ url: 'http://example.com/abc',
62
+ headers: { 'Mime-Version' => '1.0' },
63
+ request: { oauth: { consumer_key: 'anonymous' } },
64
+ ssl: { version: '2' }
65
+ }
66
+ end
67
+
68
+ it 'recursively merges the headers' do
69
+ connection_options.headers = { user_agent: 'My Agent 1.0' }
70
+ deep_merge = Faraday::Utils.deep_merge!(connection_options, url)
71
+
72
+ expect(deep_merge.headers).to eq('Mime-Version' => '1.0', user_agent: 'My Agent 1.0')
73
+ end
74
+
75
+ context 'when a target hash has an Options Struct value' do
76
+ let(:request) do
77
+ {
78
+ params_encoder: nil,
79
+ proxy: nil,
80
+ bind: nil,
81
+ timeout: nil,
82
+ open_timeout: nil,
83
+ read_timeout: nil,
84
+ write_timeout: nil,
85
+ boundary: nil,
86
+ oauth: { consumer_key: 'anonymous' },
87
+ context: nil,
88
+ on_data: nil
89
+ }
90
+ end
91
+ let(:ssl) do
92
+ {
93
+ verify: nil,
94
+ ca_file: nil,
95
+ ca_path: nil,
96
+ verify_mode: nil,
97
+ cert_store: nil,
98
+ client_cert: nil,
99
+ client_key: nil,
100
+ certificate: nil,
101
+ private_key: nil,
102
+ verify_depth: nil,
103
+ version: '2',
104
+ min_version: nil,
105
+ max_version: nil,
106
+ verify_hostname: nil
107
+ }
108
+ end
109
+
110
+ it 'does not overwrite an Options Struct value' do
111
+ deep_merge = Faraday::Utils.deep_merge!(connection_options, url)
112
+
113
+ expect(deep_merge.request.to_h).to eq(request)
114
+ expect(deep_merge.ssl.to_h).to eq(ssl)
115
+ end
116
+ end
117
+ end
56
118
  end
@@ -8,7 +8,7 @@ FakeSafeBuffer = Struct.new(:string) do
8
8
 
9
9
  def gsub(regex)
10
10
  string.gsub(regex) do
11
- match, = $&, '' =~ /a/
11
+ match, = Regexp.last_match(0), '' =~ /a/ # rubocop:disable Performance/StringInclude
12
12
  yield(match)
13
13
  end
14
14
  end
@@ -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
@@ -37,10 +37,10 @@ shared_examples 'adapter examples' do |**options|
37
37
 
38
38
  let(:conn) do
39
39
  conn_options[:ssl] ||= {}
40
- conn_options[:ssl][:ca_file] ||= ENV['SSL_FILE']
40
+ conn_options[:ssl][:ca_file] ||= ENV.fetch('SSL_FILE', nil)
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'])
@@ -166,12 +153,19 @@ shared_examples 'a request method' do |http_method|
166
153
  let(:streamed) { [] }
167
154
 
168
155
  context 'when response is empty' do
169
- it do
156
+ it 'handles streaming' do
157
+ env = nil
170
158
  conn.public_send(http_method, '/') do |req|
171
- req.options.on_data = proc { |*args| streamed << args }
159
+ req.options.on_data = proc do |chunk, size, block_env|
160
+ streamed << [chunk, size]
161
+ env ||= block_env
162
+ end
172
163
  end
173
164
 
174
165
  expect(streamed).to eq([['', 0]])
166
+ # TODO: enable this after updating all existing adapters to the new streaming API
167
+ # expect(env).to be_a(Faraday::Env)
168
+ # expect(env.status).to eq(200)
175
169
  end
176
170
  end
177
171
 
@@ -179,12 +173,19 @@ shared_examples 'a request method' do |http_method|
179
173
  before { request_stub.to_return(body: big_string) }
180
174
 
181
175
  it 'handles streaming' do
176
+ env = nil
182
177
  response = conn.public_send(http_method, '/') do |req|
183
- req.options.on_data = proc { |*args| streamed << args }
178
+ req.options.on_data = proc do |chunk, size, block_env|
179
+ streamed << [chunk, size]
180
+ env ||= block_env
181
+ end
184
182
  end
185
183
 
186
184
  expect(response.body).to eq('')
187
185
  check_streaming_response(streamed, chunk_size: 16 * 1024)
186
+ # TODO: enable this after updating all existing adapters to the new streaming API
187
+ # expect(env).to be_a(Faraday::Env)
188
+ # expect(env.status).to eq(200)
188
189
  end
189
190
  end
190
191
  end
@@ -199,11 +200,11 @@ shared_examples 'a request method' do |http_method|
199
200
  @payload2 = { b: '2' }
200
201
 
201
202
  request_stub
202
- .with(Hash[query_or_body, @payload1])
203
+ .with({ query_or_body => @payload1 })
203
204
  .to_return(body: @payload1.to_json)
204
205
 
205
206
  stub_request(http_method, remote)
206
- .with(Hash[query_or_body, @payload2])
207
+ .with({ query_or_body => @payload2 })
207
208
  .to_return(body: @payload2.to_json)
208
209
 
209
210
  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.4.1
4
+ version: 2.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - "@technoweenie"
@@ -10,70 +10,28 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-04-18 00:00:00.000000000 Z
13
+ date: 2023-01-20 00:00:00.000000000 Z
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: faraday-excon
17
- requirement: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - "~>"
20
- - !ruby/object:Gem::Version
21
- version: '1.1'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- requirements:
26
- - - "~>"
27
- - !ruby/object:Gem::Version
28
- version: '1.1'
29
15
  - !ruby/object:Gem::Dependency
30
16
  name: faraday-net_http
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-net_http_persistent
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: multipart-post
59
17
  requirement: !ruby/object:Gem::Requirement
60
18
  requirements:
61
19
  - - ">="
62
20
  - !ruby/object:Gem::Version
63
- version: '1.2'
21
+ version: '2.0'
64
22
  - - "<"
65
23
  - !ruby/object:Gem::Version
66
- version: '3'
24
+ version: '3.1'
67
25
  type: :runtime
68
26
  prerelease: false
69
27
  version_requirements: !ruby/object:Gem::Requirement
70
28
  requirements:
71
29
  - - ">="
72
30
  - !ruby/object:Gem::Version
73
- version: '1.2'
31
+ version: '2.0'
74
32
  - - "<"
75
33
  - !ruby/object:Gem::Version
76
- version: '3'
34
+ version: '3.1'
77
35
  - !ruby/object:Gem::Dependency
78
36
  name: ruby2_keywords
79
37
  requirement: !ruby/object:Gem::Requirement
@@ -102,23 +60,12 @@ files:
102
60
  - examples/client_test.rb
103
61
  - lib/faraday.rb
104
62
  - lib/faraday/adapter.rb
105
- - lib/faraday/adapter/em_http.rb
106
- - lib/faraday/adapter/em_http_ssl_patch.rb
107
- - lib/faraday/adapter/em_synchrony.rb
108
- - lib/faraday/adapter/em_synchrony/parallel_manager.rb
109
- - lib/faraday/adapter/httpclient.rb
110
- - lib/faraday/adapter/patron.rb
111
- - lib/faraday/adapter/rack.rb
112
63
  - lib/faraday/adapter/test.rb
113
- - lib/faraday/adapter/typhoeus.rb
114
64
  - lib/faraday/adapter_registry.rb
115
- - lib/faraday/autoload.rb
116
65
  - lib/faraday/connection.rb
117
- - lib/faraday/dependency_loader.rb
118
66
  - lib/faraday/encoders/flat_params_encoder.rb
119
67
  - lib/faraday/encoders/nested_params_encoder.rb
120
68
  - lib/faraday/error.rb
121
- - lib/faraday/file_part.rb
122
69
  - lib/faraday/logging/formatter.rb
123
70
  - lib/faraday/methods.rb
124
71
  - lib/faraday/middleware.rb
@@ -129,18 +76,15 @@ files:
129
76
  - lib/faraday/options/proxy_options.rb
130
77
  - lib/faraday/options/request_options.rb
131
78
  - lib/faraday/options/ssl_options.rb
132
- - lib/faraday/param_part.rb
133
79
  - lib/faraday/parameters.rb
134
80
  - lib/faraday/rack_builder.rb
135
81
  - lib/faraday/request.rb
136
82
  - lib/faraday/request/authorization.rb
137
- - lib/faraday/request/basic_authentication.rb
138
83
  - lib/faraday/request/instrumentation.rb
139
- - lib/faraday/request/multipart.rb
140
- - lib/faraday/request/retry.rb
141
- - lib/faraday/request/token_authentication.rb
84
+ - lib/faraday/request/json.rb
142
85
  - lib/faraday/request/url_encoded.rb
143
86
  - lib/faraday/response.rb
87
+ - lib/faraday/response/json.rb
144
88
  - lib/faraday/response/logger.rb
145
89
  - lib/faraday/response/raise_error.rb
146
90
  - lib/faraday/utils.rb
@@ -148,20 +92,12 @@ files:
148
92
  - lib/faraday/utils/params_hash.rb
149
93
  - lib/faraday/version.rb
150
94
  - spec/external_adapters/faraday_specs_setup.rb
151
- - spec/faraday/adapter/em_http_spec.rb
152
- - spec/faraday/adapter/em_synchrony_spec.rb
153
- - spec/faraday/adapter/excon_spec.rb
154
- - spec/faraday/adapter/httpclient_spec.rb
155
- - spec/faraday/adapter/net_http_spec.rb
156
- - spec/faraday/adapter/patron_spec.rb
157
- - spec/faraday/adapter/rack_spec.rb
158
95
  - spec/faraday/adapter/test_spec.rb
159
- - spec/faraday/adapter/typhoeus_spec.rb
160
96
  - spec/faraday/adapter_registry_spec.rb
161
97
  - spec/faraday/adapter_spec.rb
162
- - spec/faraday/composite_read_io_spec.rb
163
98
  - spec/faraday/connection_spec.rb
164
99
  - spec/faraday/error_spec.rb
100
+ - spec/faraday/middleware_registry_spec.rb
165
101
  - spec/faraday/middleware_spec.rb
166
102
  - spec/faraday/options/env_spec.rb
167
103
  - spec/faraday/options/options_spec.rb
@@ -172,12 +108,11 @@ files:
172
108
  - spec/faraday/rack_builder_spec.rb
173
109
  - spec/faraday/request/authorization_spec.rb
174
110
  - spec/faraday/request/instrumentation_spec.rb
175
- - spec/faraday/request/multipart_spec.rb
176
- - spec/faraday/request/retry_spec.rb
111
+ - spec/faraday/request/json_spec.rb
177
112
  - spec/faraday/request/url_encoded_spec.rb
178
113
  - spec/faraday/request_spec.rb
114
+ - spec/faraday/response/json_spec.rb
179
115
  - spec/faraday/response/logger_spec.rb
180
- - spec/faraday/response/middleware_spec.rb
181
116
  - spec/faraday/response/raise_error_spec.rb
182
117
  - spec/faraday/response_spec.rb
183
118
  - spec/faraday/utils/headers_spec.rb
@@ -191,13 +126,12 @@ files:
191
126
  - spec/support/shared_examples/params_encoder.rb
192
127
  - spec/support/shared_examples/request_method.rb
193
128
  - spec/support/streaming_response_checker.rb
194
- - spec/support/webmock_rack_app.rb
195
129
  homepage: https://lostisland.github.io/faraday
196
130
  licenses:
197
131
  - MIT
198
132
  metadata:
199
133
  homepage_uri: https://lostisland.github.io/faraday
200
- changelog_uri: https://github.com/lostisland/faraday/releases/tag/v1.4.1
134
+ changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.7.4
201
135
  source_code_uri: https://github.com/lostisland/faraday
202
136
  bug_tracker_uri: https://github.com/lostisland/faraday/issues
203
137
  post_install_message:
@@ -209,14 +143,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
143
  requirements:
210
144
  - - ">="
211
145
  - !ruby/object:Gem::Version
212
- version: '2.4'
146
+ version: '2.6'
213
147
  required_rubygems_version: !ruby/object:Gem::Requirement
214
148
  requirements:
215
149
  - - ">="
216
150
  - !ruby/object:Gem::Version
217
151
  version: '0'
218
152
  requirements: []
219
- rubygems_version: 3.0.3.1
153
+ rubygems_version: 3.1.6
220
154
  signing_key:
221
155
  specification_version: 4
222
156
  summary: HTTP/REST API client library.