faraday 2.10.1 → 2.12.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/lib/faraday/connection.rb +11 -3
- data/lib/faraday/options/ssl_options.rb +4 -1
- data/lib/faraday/response/raise_error.rb +15 -17
- data/lib/faraday/version.rb +1 -1
- data/spec/faraday/response/raise_error_spec.rb +20 -0
- data/spec/faraday/utils_spec.rb +2 -1
- metadata +21 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 22c3a83dd32f012eb6d4bf4fe79b3e95ce44979ac19aee42a533d88f5c27848e
|
|
4
|
+
data.tar.gz: c07d8eda18dcde723ee2ab365a5d46272c88dab63cbadecd7f3d4af6e6133f9e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 728dafd34ea29e515627f14bb254c83729ca66470961505d332994bf9ee52de85d43b97969fd0ce5cb9db22fbdf43b8ac0d64ee9447c336f5fcc6be6adc0d737
|
|
7
|
+
data.tar.gz: 1f28a98be9151d77ec729cabc40faa0c11cc27283382925452e6076e20cc5321b63732492d9dc10fb65a35977b18b957e636e72e22686c2467d91de9a038fae8
|
data/CHANGELOG.md
CHANGED
|
@@ -517,7 +517,7 @@ Breaking changes:
|
|
|
517
517
|
- Drop support for Ruby 1.8
|
|
518
518
|
|
|
519
519
|
Features:
|
|
520
|
-
- Include wrapped exception/
|
|
520
|
+
- Include wrapped exception/response in ClientErrors
|
|
521
521
|
- Add `response.reason_phrase`
|
|
522
522
|
- Provide option to selectively skip logging request/response headers
|
|
523
523
|
- Add regex support for pattern matching in `test` adapter
|
data/lib/faraday/connection.rb
CHANGED
|
@@ -314,15 +314,23 @@ module Faraday
|
|
|
314
314
|
#
|
|
315
315
|
# @yield a block to execute multiple requests.
|
|
316
316
|
# @return [void]
|
|
317
|
-
def in_parallel(manager = nil)
|
|
317
|
+
def in_parallel(manager = nil, &block)
|
|
318
318
|
@parallel_manager = manager || default_parallel_manager do
|
|
319
319
|
warn 'Warning: `in_parallel` called but no parallel-capable adapter ' \
|
|
320
320
|
'on Faraday stack'
|
|
321
321
|
warn caller[2, 10].join("\n")
|
|
322
322
|
nil
|
|
323
323
|
end
|
|
324
|
-
yield
|
|
325
|
-
|
|
324
|
+
return yield unless @parallel_manager
|
|
325
|
+
|
|
326
|
+
if @parallel_manager.respond_to?(:execute)
|
|
327
|
+
# Execute is the new method that is responsible for executing the block.
|
|
328
|
+
@parallel_manager.execute(&block)
|
|
329
|
+
else
|
|
330
|
+
# TODO: Old behaviour, deprecate and remove in 3.0
|
|
331
|
+
yield
|
|
332
|
+
@parallel_manager.run
|
|
333
|
+
end
|
|
326
334
|
ensure
|
|
327
335
|
@parallel_manager = nil
|
|
328
336
|
end
|
|
@@ -46,12 +46,15 @@ module Faraday
|
|
|
46
46
|
# #
|
|
47
47
|
# # @!attribute max_version
|
|
48
48
|
# # @return [String, Symbol] maximum SSL version (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL/SSLContext.html#method-i-max_version-3D)
|
|
49
|
+
# #
|
|
50
|
+
# # @!attribute ciphers
|
|
51
|
+
# # @return [String] cipher list in OpenSSL format (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL/SSLContext.html#method-i-ciphers-3D)
|
|
49
52
|
# class SSLOptions < Options; end
|
|
50
53
|
SSLOptions = Options.new(:verify, :verify_hostname,
|
|
51
54
|
:ca_file, :ca_path, :verify_mode,
|
|
52
55
|
:cert_store, :client_cert, :client_key,
|
|
53
56
|
:certificate, :private_key, :verify_depth,
|
|
54
|
-
:version, :min_version, :max_version) do
|
|
57
|
+
:version, :min_version, :max_version, :ciphers) do
|
|
55
58
|
# @return [Boolean] true if should verify
|
|
56
59
|
def verify?
|
|
57
60
|
verify != false
|
|
@@ -8,32 +8,30 @@ module Faraday
|
|
|
8
8
|
# rubocop:disable Naming/ConstantName
|
|
9
9
|
ClientErrorStatuses = (400...500)
|
|
10
10
|
ServerErrorStatuses = (500...600)
|
|
11
|
+
ClientErrorStatusesWithCustomExceptions = {
|
|
12
|
+
400 => Faraday::BadRequestError,
|
|
13
|
+
401 => Faraday::UnauthorizedError,
|
|
14
|
+
403 => Faraday::ForbiddenError,
|
|
15
|
+
404 => Faraday::ResourceNotFound,
|
|
16
|
+
408 => Faraday::RequestTimeoutError,
|
|
17
|
+
409 => Faraday::ConflictError,
|
|
18
|
+
422 => Faraday::UnprocessableEntityError,
|
|
19
|
+
429 => Faraday::TooManyRequestsError
|
|
20
|
+
}.freeze
|
|
11
21
|
# rubocop:enable Naming/ConstantName
|
|
12
22
|
|
|
13
|
-
DEFAULT_OPTIONS = { include_request: true }.freeze
|
|
23
|
+
DEFAULT_OPTIONS = { include_request: true, allowed_statuses: [] }.freeze
|
|
14
24
|
|
|
15
25
|
def on_complete(env)
|
|
26
|
+
return if Array(options[:allowed_statuses]).include?(env[:status])
|
|
27
|
+
|
|
16
28
|
case env[:status]
|
|
17
|
-
when
|
|
18
|
-
raise
|
|
19
|
-
when 401
|
|
20
|
-
raise Faraday::UnauthorizedError, response_values(env)
|
|
21
|
-
when 403
|
|
22
|
-
raise Faraday::ForbiddenError, response_values(env)
|
|
23
|
-
when 404
|
|
24
|
-
raise Faraday::ResourceNotFound, response_values(env)
|
|
29
|
+
when *ClientErrorStatusesWithCustomExceptions.keys
|
|
30
|
+
raise ClientErrorStatusesWithCustomExceptions[env[:status]], response_values(env)
|
|
25
31
|
when 407
|
|
26
32
|
# mimic the behavior that we get with proxy requests with HTTPS
|
|
27
33
|
msg = %(407 "Proxy Authentication Required")
|
|
28
34
|
raise Faraday::ProxyAuthError.new(msg, response_values(env))
|
|
29
|
-
when 408
|
|
30
|
-
raise Faraday::RequestTimeoutError, response_values(env)
|
|
31
|
-
when 409
|
|
32
|
-
raise Faraday::ConflictError, response_values(env)
|
|
33
|
-
when 422
|
|
34
|
-
raise Faraday::UnprocessableEntityError, response_values(env)
|
|
35
|
-
when 429
|
|
36
|
-
raise Faraday::TooManyRequestsError, response_values(env)
|
|
37
35
|
when ClientErrorStatuses
|
|
38
36
|
raise Faraday::ClientError, response_values(env)
|
|
39
37
|
when ServerErrorStatuses
|
data/lib/faraday/version.rb
CHANGED
|
@@ -252,4 +252,24 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
|
252
252
|
end
|
|
253
253
|
end
|
|
254
254
|
end
|
|
255
|
+
|
|
256
|
+
describe 'allowing certain status codes' do
|
|
257
|
+
let(:conn) do
|
|
258
|
+
Faraday.new do |b|
|
|
259
|
+
b.response :raise_error, allowed_statuses: [404]
|
|
260
|
+
b.adapter :test do |stub|
|
|
261
|
+
stub.get('bad-request') { [400, { 'X-Reason' => 'because' }, 'keep looking'] }
|
|
262
|
+
stub.get('not-found') { [404, { 'X-Reason' => 'because' }, 'keep looking'] }
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
it 'raises an error for status codes that are not explicitly allowed' do
|
|
268
|
+
expect { conn.get('bad-request') }.to raise_error(Faraday::BadRequestError)
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
it 'does not raise an error for allowed status codes' do
|
|
272
|
+
expect { conn.get('not-found') }.not_to raise_error
|
|
273
|
+
end
|
|
274
|
+
end
|
|
255
275
|
end
|
data/spec/faraday/utils_spec.rb
CHANGED
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.12.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: 2024-
|
|
13
|
+
date: 2024-09-18 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.4'
|
|
25
25
|
type: :runtime
|
|
26
26
|
prerelease: false
|
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -31,7 +31,21 @@ dependencies:
|
|
|
31
31
|
version: '2.0'
|
|
32
32
|
- - "<"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: '3.
|
|
34
|
+
version: '3.4'
|
|
35
|
+
- !ruby/object:Gem::Dependency
|
|
36
|
+
name: json
|
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '0'
|
|
42
|
+
type: :runtime
|
|
43
|
+
prerelease: false
|
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - ">="
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '0'
|
|
35
49
|
- !ruby/object:Gem::Dependency
|
|
36
50
|
name: logger
|
|
37
51
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -132,9 +146,10 @@ licenses:
|
|
|
132
146
|
- MIT
|
|
133
147
|
metadata:
|
|
134
148
|
homepage_uri: https://lostisland.github.io/faraday
|
|
135
|
-
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.
|
|
149
|
+
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.12.0
|
|
136
150
|
source_code_uri: https://github.com/lostisland/faraday
|
|
137
151
|
bug_tracker_uri: https://github.com/lostisland/faraday/issues
|
|
152
|
+
rubygems_mfa_required: 'true'
|
|
138
153
|
post_install_message:
|
|
139
154
|
rdoc_options: []
|
|
140
155
|
require_paths:
|
|
@@ -151,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
151
166
|
- !ruby/object:Gem::Version
|
|
152
167
|
version: '0'
|
|
153
168
|
requirements: []
|
|
154
|
-
rubygems_version: 3.5.
|
|
169
|
+
rubygems_version: 3.5.16
|
|
155
170
|
signing_key:
|
|
156
171
|
specification_version: 4
|
|
157
172
|
summary: HTTP/REST API client library.
|