faraday 2.11.0 → 2.12.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ceee5efaef78f039d68da91b621e8ae3723f6663fc11667709845b08358bb53
4
- data.tar.gz: 430834e5a0cecbc636eecf485eae7061447126e93b5de5f27ad2d7a938a36459
3
+ metadata.gz: bfb424c45e703a33fd819b31c8ee41c9e4e30874b280530a19ce8ae320570ef9
4
+ data.tar.gz: c1a1a5b7aab4f393908958701959f7b41fd303ca4da906c1b4c0581a13c590db
5
5
  SHA512:
6
- metadata.gz: 9664749d4913670b04ed973554bf2893fb17f63eb5117a86a36d083615421cbca07212f4797e2869f1ec86905e428f9de89c913c142464bdb6764316ad4edeae
7
- data.tar.gz: c2d7c4259cfceb8f862e4ea45f8bf7f8f3a7c1896478b882f349539270aac8161fb079b29b0f4fa29b57539a395e9a9d7f62f65ecd76433746373dc0243200b4
6
+ metadata.gz: 6d4d18e2006ac83dfd22aff834b4fe3c983bfbf578b6850944d35cfbb1ca40ba58ce07414821bc3e604ca3310c85500d5d2b8de7c33b0e6147f24484fcae688f
7
+ data.tar.gz: 9cc8057d003f09a02bbdb9a29b920003beff58391c3bf86838ae61b2e9aaac4782d5764286f824b24d486e8dee202cc2d892ec3f658db6b710d5088d5836be3c
@@ -23,8 +23,8 @@ module Faraday
23
23
  def_delegators :@logger, :debug, :info, :warn, :error, :fatal
24
24
 
25
25
  def request(env)
26
- public_send(log_level, 'request') do
27
- "#{env.method.upcase} #{apply_filters(env.url.to_s)}"
26
+ public_send(log_level) do
27
+ "request: #{env.method.upcase} #{apply_filters(env.url.to_s)}"
28
28
  end
29
29
 
30
30
  log_headers('request', env.request_headers) if log_headers?(:request)
@@ -32,7 +32,7 @@ module Faraday
32
32
  end
33
33
 
34
34
  def response(env)
35
- public_send(log_level, 'response') { "Status #{env.status}" }
35
+ public_send(log_level) { "response: Status #{env.status}" }
36
36
 
37
37
  log_headers('response', env.response_headers) if log_headers?(:response)
38
38
  log_body('response', env[:body]) if env[:body] && log_body?(:response)
@@ -41,7 +41,7 @@ module Faraday
41
41
  def exception(exc)
42
42
  return unless log_errors?
43
43
 
44
- public_send(log_level, 'error') { exc.full_message }
44
+ public_send(log_level) { "error: #{exc.full_message}" }
45
45
 
46
46
  log_headers('error', exc.response_headers) if exc.respond_to?(:response_headers) && log_headers?(:error)
47
47
  return unless exc.respond_to?(:response_body) && exc.response_body && log_body?(:error)
@@ -107,11 +107,11 @@ module Faraday
107
107
  end
108
108
 
109
109
  def log_headers(type, headers)
110
- public_send(log_level, type) { apply_filters(dump_headers(headers)) }
110
+ public_send(log_level) { "#{type}: #{apply_filters(dump_headers(headers))}" }
111
111
  end
112
112
 
113
113
  def log_body(type, body)
114
- public_send(log_level, type) { apply_filters(dump_body(body)) }
114
+ public_send(log_level) { "#{type}: #{apply_filters(dump_body(body))}" }
115
115
  end
116
116
  end
117
117
  end
@@ -88,22 +88,22 @@ module Faraday
88
88
  @handlers.frozen?
89
89
  end
90
90
 
91
- ruby2_keywords def use(klass, *args, &block)
91
+ def use(klass, ...)
92
92
  if klass.is_a? Symbol
93
- use_symbol(Faraday::Middleware, klass, *args, &block)
93
+ use_symbol(Faraday::Middleware, klass, ...)
94
94
  else
95
95
  raise_if_locked
96
96
  raise_if_adapter(klass)
97
- @handlers << self.class::Handler.new(klass, *args, &block)
97
+ @handlers << self.class::Handler.new(klass, ...)
98
98
  end
99
99
  end
100
100
 
101
- ruby2_keywords def request(key, *args, &block)
102
- use_symbol(Faraday::Request, key, *args, &block)
101
+ def request(key, ...)
102
+ use_symbol(Faraday::Request, key, ...)
103
103
  end
104
104
 
105
- ruby2_keywords def response(key, *args, &block)
106
- use_symbol(Faraday::Response, key, *args, &block)
105
+ def response(...)
106
+ use_symbol(Faraday::Response, ...)
107
107
  end
108
108
 
109
109
  ruby2_keywords def adapter(klass = NO_ARGUMENT, *args, &block)
@@ -115,25 +115,25 @@ module Faraday
115
115
 
116
116
  ## methods to push onto the various positions in the stack:
117
117
 
118
- ruby2_keywords def insert(index, *args, &block)
118
+ def insert(index, ...)
119
119
  raise_if_locked
120
120
  index = assert_index(index)
121
- handler = self.class::Handler.new(*args, &block)
121
+ handler = self.class::Handler.new(...)
122
122
  @handlers.insert(index, handler)
123
123
  end
124
124
 
125
125
  alias insert_before insert
126
126
 
127
- ruby2_keywords def insert_after(index, *args, &block)
127
+ def insert_after(index, ...)
128
128
  index = assert_index(index)
129
- insert(index + 1, *args, &block)
129
+ insert(index + 1, ...)
130
130
  end
131
131
 
132
- ruby2_keywords def swap(index, *args, &block)
132
+ def swap(index, ...)
133
133
  raise_if_locked
134
134
  index = assert_index(index)
135
135
  @handlers.delete_at(index)
136
- insert(index, *args, &block)
136
+ insert(index, ...)
137
137
  end
138
138
 
139
139
  def delete(handler)
@@ -237,8 +237,8 @@ module Faraday
237
237
  klass <= Faraday::Adapter
238
238
  end
239
239
 
240
- ruby2_keywords def use_symbol(mod, key, *args, &block)
241
- use(mod.lookup_middleware(key), *args, &block)
240
+ def use_symbol(mod, key, ...)
241
+ use(mod.lookup_middleware(key), ...)
242
242
  end
243
243
 
244
244
  def assert_index(index)
@@ -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 400
18
- raise Faraday::BadRequestError, response_values(env)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Faraday
4
- VERSION = '2.11.0'
4
+ VERSION = '2.12.2'
5
5
  end
@@ -24,7 +24,11 @@ RSpec.describe Faraday::Error do
24
24
  it { expect(subject.wrapped_exception).to be_nil }
25
25
  it { expect(subject.response).to eq(exception) }
26
26
  it { expect(subject.message).to eq('the server responded with status 400') }
27
- it { expect(subject.inspect).to eq('#<Faraday::Error response={:status=>400}>') }
27
+ if RUBY_VERSION >= '3.4'
28
+ it { expect(subject.inspect).to eq('#<Faraday::Error response={status: 400}>') }
29
+ else
30
+ it { expect(subject.inspect).to eq('#<Faraday::Error response={:status=>400}>') }
31
+ end
28
32
  it { expect(subject.response_status).to eq(400) }
29
33
  it { expect(subject.response_headers).to be_nil }
30
34
  it { expect(subject.response_body).to be_nil }
@@ -61,7 +65,11 @@ RSpec.describe Faraday::Error do
61
65
  it { expect(subject.wrapped_exception).to be_nil }
62
66
  it { expect(subject.response).to eq(response) }
63
67
  it { expect(subject.message).to eq('custom message') }
64
- it { expect(subject.inspect).to eq('#<Faraday::Error response={:status=>400}>') }
68
+ if RUBY_VERSION >= '3.4'
69
+ it { expect(subject.inspect).to eq('#<Faraday::Error response={status: 400}>') }
70
+ else
71
+ it { expect(subject.inspect).to eq('#<Faraday::Error response={:status=>400}>') }
72
+ end
65
73
  it { expect(subject.response_status).to eq(400) }
66
74
  it { expect(subject.response_headers).to be_nil }
67
75
  it { expect(subject.response_body).to be_nil }
@@ -55,6 +55,26 @@ RSpec.describe Faraday::Response::Logger do
55
55
  end
56
56
  end
57
57
 
58
+ context 'when logger with program name' do
59
+ let(:logger) { Logger.new(string_io, progname: 'my_best_program') }
60
+
61
+ it 'logs with program name' do
62
+ conn.get '/hello'
63
+
64
+ expect(string_io.string).to match('-- my_best_program: request:')
65
+ expect(string_io.string).to match('-- my_best_program: response:')
66
+ end
67
+ end
68
+
69
+ context 'when logger without program name' do
70
+ it 'logs without program name' do
71
+ conn.get '/hello'
72
+
73
+ expect(string_io.string).to match('-- : request:')
74
+ expect(string_io.string).to match('-- : response:')
75
+ end
76
+ end
77
+
58
78
  context 'with default formatter' do
59
79
  let(:formatter) { instance_double(Faraday::Logging::Formatter, request: true, response: true, filter: []) }
60
80
 
@@ -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
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.11.0
4
+ version: 2.12.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - "@technoweenie"
8
8
  - "@iMacTia"
9
9
  - "@olleolleolle"
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-08-26 00:00:00.000000000 Z
13
+ date: 2024-12-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.4'
24
+ version: '3.5'
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.4'
34
+ version: '3.5'
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
@@ -46,7 +60,7 @@ dependencies:
46
60
  - - ">="
47
61
  - !ruby/object:Gem::Version
48
62
  version: '0'
49
- description:
63
+ description:
50
64
  email: technoweenie@gmail.com
51
65
  executables: []
52
66
  extensions: []
@@ -132,11 +146,11 @@ 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.11.0
149
+ changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.12.2
136
150
  source_code_uri: https://github.com/lostisland/faraday
137
151
  bug_tracker_uri: https://github.com/lostisland/faraday/issues
138
152
  rubygems_mfa_required: 'true'
139
- post_install_message:
153
+ post_install_message:
140
154
  rdoc_options: []
141
155
  require_paths:
142
156
  - lib
@@ -152,8 +166,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
166
  - !ruby/object:Gem::Version
153
167
  version: '0'
154
168
  requirements: []
155
- rubygems_version: 3.5.11
156
- signing_key:
169
+ rubygems_version: 3.5.22
170
+ signing_key:
157
171
  specification_version: 4
158
172
  summary: HTTP/REST API client library.
159
173
  test_files: []