faraday 2.7.4 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +23 -11
- data/Rakefile +3 -1
- data/lib/faraday/adapter/test.rb +3 -3
- data/lib/faraday/connection.rb +12 -17
- data/lib/faraday/encoders/nested_params_encoder.rb +1 -1
- data/lib/faraday/error.rb +17 -3
- data/lib/faraday/logging/formatter.rb +12 -16
- data/lib/faraday/options/connection_options.rb +7 -6
- data/lib/faraday/options/env.rb +67 -68
- data/lib/faraday/options/proxy_options.rb +7 -3
- data/lib/faraday/options/request_options.rb +7 -6
- data/lib/faraday/options/ssl_options.rb +51 -50
- data/lib/faraday/options.rb +4 -3
- data/lib/faraday/rack_builder.rb +0 -1
- data/lib/faraday/request/instrumentation.rb +3 -1
- data/lib/faraday/request/json.rb +18 -3
- data/lib/faraday/request.rb +10 -7
- data/lib/faraday/response/json.rb +20 -1
- data/lib/faraday/response/raise_error.rb +24 -5
- data/lib/faraday/utils.rb +3 -4
- data/lib/faraday/version.rb +1 -1
- data/spec/faraday/error_spec.rb +31 -6
- data/spec/faraday/options/options_spec.rb +1 -1
- data/spec/faraday/options/proxy_options_spec.rb +8 -0
- data/spec/faraday/request/json_spec.rb +88 -0
- data/spec/faraday/response/json_spec.rb +72 -0
- data/spec/faraday/response/logger_spec.rb +10 -0
- data/spec/faraday/response/raise_error_spec.rb +40 -1
- data/spec/faraday_spec.rb +8 -4
- data/spec/spec_helper.rb +6 -5
- metadata +7 -21
@@ -11,8 +11,10 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
11
11
|
stub.get('forbidden') { [403, { 'X-Reason' => 'because' }, 'keep looking'] }
|
12
12
|
stub.get('not-found') { [404, { 'X-Reason' => 'because' }, 'keep looking'] }
|
13
13
|
stub.get('proxy-error') { [407, { 'X-Reason' => 'because' }, 'keep looking'] }
|
14
|
+
stub.get('request-timeout') { [408, { 'X-Reason' => 'because' }, 'keep looking'] }
|
14
15
|
stub.get('conflict') { [409, { 'X-Reason' => 'because' }, 'keep looking'] }
|
15
16
|
stub.get('unprocessable-entity') { [422, { 'X-Reason' => 'because' }, 'keep looking'] }
|
17
|
+
stub.get('too-many-requests') { [429, { 'X-Reason' => 'because' }, 'keep looking'] }
|
16
18
|
stub.get('4xx') { [499, { 'X-Reason' => 'because' }, 'keep looking'] }
|
17
19
|
stub.get('nil-status') { [nil, { 'X-Reason' => 'nil' }, 'fail'] }
|
18
20
|
stub.get('server-error') { [500, { 'X-Error' => 'bailout' }, 'fail'] }
|
@@ -79,6 +81,17 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
79
81
|
end
|
80
82
|
end
|
81
83
|
|
84
|
+
it 'raises Faraday::RequestTimeoutError for 408 responses' do
|
85
|
+
expect { conn.get('request-timeout') }.to raise_error(Faraday::RequestTimeoutError) do |ex|
|
86
|
+
expect(ex.message).to eq('the server responded with status 408')
|
87
|
+
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
88
|
+
expect(ex.response[:status]).to eq(408)
|
89
|
+
expect(ex.response_status).to eq(408)
|
90
|
+
expect(ex.response_body).to eq('keep looking')
|
91
|
+
expect(ex.response_headers['X-Reason']).to eq('because')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
82
95
|
it 'raises Faraday::ConflictError for 409 responses' do
|
83
96
|
expect { conn.get('conflict') }.to raise_error(Faraday::ConflictError) do |ex|
|
84
97
|
expect(ex.message).to eq('the server responded with status 409')
|
@@ -101,6 +114,17 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
101
114
|
end
|
102
115
|
end
|
103
116
|
|
117
|
+
it 'raises Faraday::TooManyRequestsError for 429 responses' do
|
118
|
+
expect { conn.get('too-many-requests') }.to raise_error(Faraday::TooManyRequestsError) do |ex|
|
119
|
+
expect(ex.message).to eq('the server responded with status 429')
|
120
|
+
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
121
|
+
expect(ex.response[:status]).to eq(429)
|
122
|
+
expect(ex.response_status).to eq(429)
|
123
|
+
expect(ex.response_body).to eq('keep looking')
|
124
|
+
expect(ex.response_headers['X-Reason']).to eq('because')
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
104
128
|
it 'raises Faraday::NilStatusError for nil status in response' do
|
105
129
|
expect { conn.get('nil-status') }.to raise_error(Faraday::NilStatusError) do |ex|
|
106
130
|
expect(ex.message).to eq('http status could not be derived from the server response')
|
@@ -137,7 +161,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
137
161
|
describe 'request info' do
|
138
162
|
let(:conn) do
|
139
163
|
Faraday.new do |b|
|
140
|
-
b.response :raise_error
|
164
|
+
b.response :raise_error, **middleware_options
|
141
165
|
b.adapter :test do |stub|
|
142
166
|
stub.post(url, request_body, request_headers) do
|
143
167
|
[400, { 'X-Reason' => 'because' }, 'keep looking']
|
@@ -145,6 +169,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
145
169
|
end
|
146
170
|
end
|
147
171
|
end
|
172
|
+
let(:middleware_options) { {} }
|
148
173
|
let(:request_body) { JSON.generate({ 'item' => 'sth' }) }
|
149
174
|
let(:request_headers) { { 'Authorization' => 'Basic 123' } }
|
150
175
|
let(:url_path) { 'request' }
|
@@ -168,5 +193,19 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
168
193
|
expect(ex.response[:request][:body]).to eq(request_body)
|
169
194
|
end
|
170
195
|
end
|
196
|
+
|
197
|
+
context 'when the include_request option is set to false' do
|
198
|
+
let(:middleware_options) { { include_request: false } }
|
199
|
+
|
200
|
+
it 'does not include request info in the exception' do
|
201
|
+
expect { perform_request }.to raise_error(Faraday::BadRequestError) do |ex|
|
202
|
+
expect(ex.response.keys).to contain_exactly(
|
203
|
+
:status,
|
204
|
+
:headers,
|
205
|
+
:body
|
206
|
+
)
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
171
210
|
end
|
172
211
|
end
|
data/spec/faraday_spec.rb
CHANGED
@@ -18,10 +18,14 @@ RSpec.describe Faraday do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'uses method_missing on Faraday if there is no proxyable method' do
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
expected_message =
|
22
|
+
if RUBY_VERSION >= '3.3'
|
23
|
+
"undefined method `this_method_does_not_exist' for module Faraday"
|
24
|
+
else
|
25
|
+
"undefined method `this_method_does_not_exist' for Faraday:Module"
|
26
|
+
end
|
27
|
+
|
28
|
+
expect { Faraday.this_method_does_not_exist }.to raise_error(NoMethodError, expected_message)
|
25
29
|
end
|
26
30
|
|
27
31
|
it 'proxied methods can be accessed' do
|
data/spec/spec_helper.rb
CHANGED
@@ -29,14 +29,15 @@ SimpleCov.start do
|
|
29
29
|
minimum_coverage_by_file 26
|
30
30
|
end
|
31
31
|
|
32
|
-
# Ensure all /lib files are loaded
|
33
|
-
# so they will be included in the test coverage report.
|
34
|
-
Dir['./lib/**/*.rb'].sort.each { |file| require file }
|
35
|
-
|
36
32
|
require 'faraday'
|
37
33
|
require 'pry'
|
38
34
|
|
39
|
-
|
35
|
+
# Ensure all /lib files are loaded
|
36
|
+
# so they will be included in the test coverage report.
|
37
|
+
Dir['./lib/**/*.rb'].each { |file| require file }
|
38
|
+
|
39
|
+
# Load all Rspec support files
|
40
|
+
Dir['./spec/support/**/*.rb'].each { |file| require file }
|
40
41
|
|
41
42
|
RSpec.configure do |config|
|
42
43
|
# rspec-expectations config goes here. You can use an alternate
|
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: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "@technoweenie"
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2024-01-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday-net_http
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '2.0'
|
22
22
|
- - "<"
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: '3.
|
24
|
+
version: '3.2'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -31,21 +31,7 @@ dependencies:
|
|
31
31
|
version: '2.0'
|
32
32
|
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '3.
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: ruby2_keywords
|
37
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: 0.0.4
|
42
|
-
type: :runtime
|
43
|
-
prerelease: false
|
44
|
-
version_requirements: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - ">="
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: 0.0.4
|
34
|
+
version: '3.2'
|
49
35
|
description:
|
50
36
|
email: technoweenie@gmail.com
|
51
37
|
executables: []
|
@@ -131,7 +117,7 @@ licenses:
|
|
131
117
|
- MIT
|
132
118
|
metadata:
|
133
119
|
homepage_uri: https://lostisland.github.io/faraday
|
134
|
-
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.
|
120
|
+
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.9.0
|
135
121
|
source_code_uri: https://github.com/lostisland/faraday
|
136
122
|
bug_tracker_uri: https://github.com/lostisland/faraday/issues
|
137
123
|
post_install_message:
|
@@ -143,14 +129,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
143
129
|
requirements:
|
144
130
|
- - ">="
|
145
131
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
132
|
+
version: '3.0'
|
147
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
134
|
requirements:
|
149
135
|
- - ">="
|
150
136
|
- !ruby/object:Gem::Version
|
151
137
|
version: '0'
|
152
138
|
requirements: []
|
153
|
-
rubygems_version: 3.
|
139
|
+
rubygems_version: 3.5.3
|
154
140
|
signing_key:
|
155
141
|
specification_version: 4
|
156
142
|
summary: HTTP/REST API client library.
|