faraday 2.13.0 → 2.13.2
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.
- checksums.yaml +4 -4
- data/lib/faraday/error.rb +19 -6
- data/lib/faraday/options/env.rb +1 -1
- data/lib/faraday/rack_builder.rb +1 -5
- data/lib/faraday/response/logger.rb +5 -3
- data/lib/faraday/version.rb +1 -1
- data/lib/faraday.rb +2 -1
- data/spec/faraday/error_spec.rb +1 -1
- data/spec/faraday/response/logger_spec.rb +19 -4
- data/spec/faraday/response/raise_error_spec.rb +10 -10
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba5077c825db9905310c665e101ad938f6e169dc9a887cbd03314434a7b37405
|
4
|
+
data.tar.gz: dc66440fa21267c217c7f5ee12d490eb039bcd6eed2b1efd727963c4d92eee16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f55feaf0423e9169ad01017c18479dbac065fd1bce8403a82d841fac49e2845f420b0bb1bae5b3bf1b1dba5dbc03796f10997ea8ec7c15148b8ed1f5770cd81b
|
7
|
+
data.tar.gz: 875b2d50d365f7771e825949a483b433e7c87a969bb721c6024cb575832ddf02013c9252be5c2285008c4d4177ce9d085caaeb4940b014db5b505ed6bd25c226
|
data/lib/faraday/error.rb
CHANGED
@@ -79,12 +79,25 @@ module Faraday
|
|
79
79
|
|
80
80
|
# Pulls out potential parent exception and response hash.
|
81
81
|
def exc_msg_and_response(exc, response = nil)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
82
|
+
if exc.is_a?(Exception)
|
83
|
+
[exc, exc.message, response]
|
84
|
+
elsif exc.is_a?(Hash)
|
85
|
+
http_status = exc.fetch(:status)
|
86
|
+
|
87
|
+
request = exc.fetch(:request, nil)
|
88
|
+
|
89
|
+
if request.nil?
|
90
|
+
exception_message = "the server responded with status #{http_status} - method and url are not available " \
|
91
|
+
'due to include_request: false on Faraday::Response::RaiseError middleware'
|
92
|
+
else
|
93
|
+
exception_message = "the server responded with status #{http_status} for #{request.fetch(:method).upcase} " \
|
94
|
+
"#{request.fetch(:url)}"
|
95
|
+
end
|
96
|
+
|
97
|
+
[nil, exception_message, exc]
|
98
|
+
else
|
99
|
+
[nil, exc.to_s, response]
|
100
|
+
end
|
88
101
|
end
|
89
102
|
end
|
90
103
|
|
data/lib/faraday/options/env.rb
CHANGED
@@ -60,7 +60,7 @@ module Faraday
|
|
60
60
|
:reason_phrase, :response_body) do
|
61
61
|
const_set(:ContentLength, 'Content-Length')
|
62
62
|
const_set(:StatusesWithoutBody, Set.new([204, 304]))
|
63
|
-
const_set(:SuccessfulStatuses,
|
63
|
+
const_set(:SuccessfulStatuses, 200..299)
|
64
64
|
|
65
65
|
# A Set of HTTP verbs that typically send a body. If no body is set for
|
66
66
|
# these requests, the Content-Length header is set to 0.
|
data/lib/faraday/rack_builder.rb
CHANGED
@@ -221,7 +221,7 @@ module Faraday
|
|
221
221
|
end
|
222
222
|
|
223
223
|
def raise_if_adapter(klass)
|
224
|
-
return unless
|
224
|
+
return unless klass <= Faraday::Adapter
|
225
225
|
|
226
226
|
raise 'Adapter should be set using the `adapter` method, not `use`'
|
227
227
|
end
|
@@ -234,10 +234,6 @@ module Faraday
|
|
234
234
|
!@adapter.nil?
|
235
235
|
end
|
236
236
|
|
237
|
-
def is_adapter?(klass) # rubocop:disable Naming/PredicateName
|
238
|
-
klass <= Faraday::Adapter
|
239
|
-
end
|
240
|
-
|
241
237
|
def use_symbol(mod, key, ...)
|
242
238
|
use(mod.lookup_middleware(key), ...)
|
243
239
|
end
|
@@ -10,11 +10,13 @@ module Faraday
|
|
10
10
|
# lifecycle to a given Logger object. By default, this logs to STDOUT. See
|
11
11
|
# Faraday::Logging::Formatter to see specifically what is logged.
|
12
12
|
class Logger < Middleware
|
13
|
+
DEFAULT_OPTIONS = { formatter: Logging::Formatter }.merge(Logging::Formatter::DEFAULT_OPTIONS).freeze
|
14
|
+
|
13
15
|
def initialize(app, logger = nil, options = {})
|
14
|
-
super(app)
|
16
|
+
super(app, options)
|
15
17
|
logger ||= ::Logger.new($stdout)
|
16
|
-
formatter_class = options.delete(:formatter)
|
17
|
-
@formatter = formatter_class.new(logger: logger, options: options)
|
18
|
+
formatter_class = @options.delete(:formatter)
|
19
|
+
@formatter = formatter_class.new(logger: logger, options: @options)
|
18
20
|
yield @formatter if block_given?
|
19
21
|
end
|
20
22
|
|
data/lib/faraday/version.rb
CHANGED
data/lib/faraday.rb
CHANGED
data/spec/faraday/error_spec.rb
CHANGED
@@ -23,7 +23,7 @@ RSpec.describe Faraday::Error do
|
|
23
23
|
|
24
24
|
it { expect(subject.wrapped_exception).to be_nil }
|
25
25
|
it { expect(subject.response).to eq(exception) }
|
26
|
-
it { expect(subject.message).to eq('the server responded with status 400') }
|
26
|
+
it { expect(subject.message).to eq('the server responded with status 400 - method and url are not available due to include_request: false on Faraday::Response::RaiseError middleware') }
|
27
27
|
if RUBY_VERSION >= '3.4'
|
28
28
|
it { expect(subject.inspect).to eq('#<Faraday::Error response={status: 400}>') }
|
29
29
|
else
|
@@ -189,7 +189,7 @@ RSpec.describe Faraday::Response::Logger do
|
|
189
189
|
context 'when logging request body' do
|
190
190
|
let(:logger_options) { { bodies: { request: true } } }
|
191
191
|
|
192
|
-
it '
|
192
|
+
it 'logs only request body' do
|
193
193
|
conn.post '/ohyes', 'name=Tamago', accept: 'text/html'
|
194
194
|
expect(string_io.string).to match(%(name=Tamago))
|
195
195
|
expect(string_io.string).not_to match(%(pebbles))
|
@@ -199,7 +199,7 @@ RSpec.describe Faraday::Response::Logger do
|
|
199
199
|
context 'when logging response body' do
|
200
200
|
let(:logger_options) { { bodies: { response: true } } }
|
201
201
|
|
202
|
-
it '
|
202
|
+
it 'logs only response body' do
|
203
203
|
conn.post '/ohyes', 'name=Hamachi', accept: 'text/html'
|
204
204
|
expect(string_io.string).to match(%(pebbles))
|
205
205
|
expect(string_io.string).not_to match(%(name=Hamachi))
|
@@ -209,13 +209,13 @@ RSpec.describe Faraday::Response::Logger do
|
|
209
209
|
context 'when logging request and response bodies' do
|
210
210
|
let(:logger_options) { { bodies: true } }
|
211
211
|
|
212
|
-
it '
|
212
|
+
it 'logs request and response body' do
|
213
213
|
conn.post '/ohyes', 'name=Ebi', accept: 'text/html'
|
214
214
|
expect(string_io.string).to match(%(name=Ebi))
|
215
215
|
expect(string_io.string).to match(%(pebbles))
|
216
216
|
end
|
217
217
|
|
218
|
-
it '
|
218
|
+
it 'logs response body object' do
|
219
219
|
conn.get '/rubbles', nil, accept: 'text/html'
|
220
220
|
expect(string_io.string).to match(%([\"Barney\", \"Betty\", \"Bam Bam\"]\n))
|
221
221
|
end
|
@@ -228,6 +228,21 @@ RSpec.describe Faraday::Response::Logger do
|
|
228
228
|
end
|
229
229
|
end
|
230
230
|
|
231
|
+
context 'when bodies are logged by default' do
|
232
|
+
before do
|
233
|
+
described_class.default_options = { bodies: true }
|
234
|
+
end
|
235
|
+
|
236
|
+
it 'logs response body' do
|
237
|
+
conn.post '/ohai'
|
238
|
+
expect(string_io.string).to match(%(fred))
|
239
|
+
end
|
240
|
+
|
241
|
+
after do
|
242
|
+
described_class.default_options = { bodies: false }
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
231
246
|
context 'when logging errors' do
|
232
247
|
let(:logger_options) { { errors: true } }
|
233
248
|
|
@@ -28,7 +28,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
28
28
|
|
29
29
|
it 'raises Faraday::BadRequestError for 400 responses' do
|
30
30
|
expect { conn.get('bad-request') }.to raise_error(Faraday::BadRequestError) do |ex|
|
31
|
-
expect(ex.message).to eq('the server responded with status 400')
|
31
|
+
expect(ex.message).to eq('the server responded with status 400 for GET http:/bad-request')
|
32
32
|
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
33
33
|
expect(ex.response[:status]).to eq(400)
|
34
34
|
expect(ex.response_status).to eq(400)
|
@@ -39,7 +39,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
39
39
|
|
40
40
|
it 'raises Faraday::UnauthorizedError for 401 responses' do
|
41
41
|
expect { conn.get('unauthorized') }.to raise_error(Faraday::UnauthorizedError) do |ex|
|
42
|
-
expect(ex.message).to eq('the server responded with status 401')
|
42
|
+
expect(ex.message).to eq('the server responded with status 401 for GET http:/unauthorized')
|
43
43
|
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
44
44
|
expect(ex.response[:status]).to eq(401)
|
45
45
|
expect(ex.response_status).to eq(401)
|
@@ -50,7 +50,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
50
50
|
|
51
51
|
it 'raises Faraday::ForbiddenError for 403 responses' do
|
52
52
|
expect { conn.get('forbidden') }.to raise_error(Faraday::ForbiddenError) do |ex|
|
53
|
-
expect(ex.message).to eq('the server responded with status 403')
|
53
|
+
expect(ex.message).to eq('the server responded with status 403 for GET http:/forbidden')
|
54
54
|
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
55
55
|
expect(ex.response[:status]).to eq(403)
|
56
56
|
expect(ex.response_status).to eq(403)
|
@@ -61,7 +61,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
61
61
|
|
62
62
|
it 'raises Faraday::ResourceNotFound for 404 responses' do
|
63
63
|
expect { conn.get('not-found') }.to raise_error(Faraday::ResourceNotFound) do |ex|
|
64
|
-
expect(ex.message).to eq('the server responded with status 404')
|
64
|
+
expect(ex.message).to eq('the server responded with status 404 for GET http:/not-found')
|
65
65
|
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
66
66
|
expect(ex.response[:status]).to eq(404)
|
67
67
|
expect(ex.response_status).to eq(404)
|
@@ -83,7 +83,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
83
83
|
|
84
84
|
it 'raises Faraday::RequestTimeoutError for 408 responses' do
|
85
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')
|
86
|
+
expect(ex.message).to eq('the server responded with status 408 for GET http:/request-timeout')
|
87
87
|
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
88
88
|
expect(ex.response[:status]).to eq(408)
|
89
89
|
expect(ex.response_status).to eq(408)
|
@@ -94,7 +94,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
94
94
|
|
95
95
|
it 'raises Faraday::ConflictError for 409 responses' do
|
96
96
|
expect { conn.get('conflict') }.to raise_error(Faraday::ConflictError) do |ex|
|
97
|
-
expect(ex.message).to eq('the server responded with status 409')
|
97
|
+
expect(ex.message).to eq('the server responded with status 409 for GET http:/conflict')
|
98
98
|
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
99
99
|
expect(ex.response[:status]).to eq(409)
|
100
100
|
expect(ex.response_status).to eq(409)
|
@@ -105,7 +105,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
105
105
|
|
106
106
|
it 'raises Faraday::UnprocessableEntityError for 422 responses' do
|
107
107
|
expect { conn.get('unprocessable-entity') }.to raise_error(Faraday::UnprocessableEntityError) do |ex|
|
108
|
-
expect(ex.message).to eq('the server responded with status 422')
|
108
|
+
expect(ex.message).to eq('the server responded with status 422 for GET http:/unprocessable-entity')
|
109
109
|
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
110
110
|
expect(ex.response[:status]).to eq(422)
|
111
111
|
expect(ex.response_status).to eq(422)
|
@@ -116,7 +116,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
116
116
|
|
117
117
|
it 'raises Faraday::TooManyRequestsError for 429 responses' do
|
118
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')
|
119
|
+
expect(ex.message).to eq('the server responded with status 429 for GET http:/too-many-requests')
|
120
120
|
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
121
121
|
expect(ex.response[:status]).to eq(429)
|
122
122
|
expect(ex.response_status).to eq(429)
|
@@ -138,7 +138,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
138
138
|
|
139
139
|
it 'raises Faraday::ClientError for other 4xx responses' do
|
140
140
|
expect { conn.get('4xx') }.to raise_error(Faraday::ClientError) do |ex|
|
141
|
-
expect(ex.message).to eq('the server responded with status 499')
|
141
|
+
expect(ex.message).to eq('the server responded with status 499 for GET http:/4xx')
|
142
142
|
expect(ex.response[:headers]['X-Reason']).to eq('because')
|
143
143
|
expect(ex.response[:status]).to eq(499)
|
144
144
|
expect(ex.response_status).to eq(499)
|
@@ -149,7 +149,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
149
149
|
|
150
150
|
it 'raises Faraday::ServerError for 500 responses' do
|
151
151
|
expect { conn.get('server-error') }.to raise_error(Faraday::ServerError) do |ex|
|
152
|
-
expect(ex.message).to eq('the server responded with status 500')
|
152
|
+
expect(ex.message).to eq('the server responded with status 500 for GET http:/server-error')
|
153
153
|
expect(ex.response[:headers]['X-Error']).to eq('bailout')
|
154
154
|
expect(ex.response[:status]).to eq(500)
|
155
155
|
expect(ex.response_status).to eq(500)
|
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.13.
|
4
|
+
version: 2.13.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "@technoweenie"
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
- "@olleolleolle"
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday-net_http
|
@@ -144,7 +144,7 @@ licenses:
|
|
144
144
|
- MIT
|
145
145
|
metadata:
|
146
146
|
homepage_uri: https://lostisland.github.io/faraday
|
147
|
-
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.13.
|
147
|
+
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.13.2
|
148
148
|
source_code_uri: https://github.com/lostisland/faraday
|
149
149
|
bug_tracker_uri: https://github.com/lostisland/faraday/issues
|
150
150
|
rubygems_mfa_required: 'true'
|
@@ -163,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
163
|
- !ruby/object:Gem::Version
|
164
164
|
version: '0'
|
165
165
|
requirements: []
|
166
|
-
rubygems_version: 3.6.
|
166
|
+
rubygems_version: 3.6.7
|
167
167
|
specification_version: 4
|
168
168
|
summary: HTTP/REST API client library.
|
169
169
|
test_files: []
|