Package not found. Please check the package name and try again.
faraday 2.7.12 → 2.8.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/lib/faraday/adapter/test.rb +1 -1
- data/lib/faraday/logging/formatter.rb +0 -2
- data/lib/faraday/options.rb +3 -3
- data/lib/faraday/request/json.rb +7 -1
- data/lib/faraday/response/json.rb +20 -1
- data/lib/faraday/version.rb +1 -1
- data/spec/faraday/request/json_spec.rb +64 -0
- data/spec/faraday/response/json_spec.rb +72 -0
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bf63567c6cdd2b98f1046c1f219925f847aa166966c5d95fb95a394e0e7c277a
|
|
4
|
+
data.tar.gz: e9a4839b422aaebcd740ce8d2203accd36f17138b44bd67aa86a9410467c89b3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6f5a0d034099cf967dbae0b1bf9d92d3d0291e45a27c2150dae5129f8a634f583223a0273c0491536337bc2cbbe75ce7d89f7967980e48181b48c2b47d93b3a8
|
|
7
|
+
data.tar.gz: d0e48e42fbff20178e7ed20734c52033464e43ca013255dc33e55f42270b75ebba1619b8380dbd0d9a148e5f4159654229cb9b1625028f9cb128b113977b0e40
|
data/lib/faraday/adapter/test.rb
CHANGED
|
@@ -146,7 +146,7 @@ module Faraday
|
|
|
146
146
|
# which means that all of a path, parameters, and headers must be the same as an actual request.
|
|
147
147
|
def strict_mode=(value)
|
|
148
148
|
@strict_mode = value
|
|
149
|
-
@stack.
|
|
149
|
+
@stack.each_value do |stubs|
|
|
150
150
|
stubs.each do |stub|
|
|
151
151
|
stub.strict_mode = value
|
|
152
152
|
end
|
data/lib/faraday/options.rb
CHANGED
|
@@ -30,7 +30,7 @@ module Faraday
|
|
|
30
30
|
new_value = value
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
send("#{key}=", new_value) unless new_value.nil?
|
|
33
|
+
send(:"#{key}=", new_value) unless new_value.nil?
|
|
34
34
|
end
|
|
35
35
|
self
|
|
36
36
|
end
|
|
@@ -38,7 +38,7 @@ module Faraday
|
|
|
38
38
|
# Public
|
|
39
39
|
def delete(key)
|
|
40
40
|
value = send(key)
|
|
41
|
-
send("#{key}=", nil)
|
|
41
|
+
send(:"#{key}=", nil)
|
|
42
42
|
value
|
|
43
43
|
end
|
|
44
44
|
|
|
@@ -57,7 +57,7 @@ module Faraday
|
|
|
57
57
|
else
|
|
58
58
|
other_value
|
|
59
59
|
end
|
|
60
|
-
send("#{key}=", new_value) unless new_value.nil?
|
|
60
|
+
send(:"#{key}=", new_value) unless new_value.nil?
|
|
61
61
|
end
|
|
62
62
|
self
|
|
63
63
|
end
|
data/lib/faraday/request/json.rb
CHANGED
|
@@ -24,7 +24,13 @@ module Faraday
|
|
|
24
24
|
private
|
|
25
25
|
|
|
26
26
|
def encode(data)
|
|
27
|
-
|
|
27
|
+
if options[:encoder].is_a?(Array) && options[:encoder].size >= 2
|
|
28
|
+
options[:encoder][0].public_send(options[:encoder][1], data)
|
|
29
|
+
elsif options[:encoder].respond_to?(:dump)
|
|
30
|
+
options[:encoder].dump(data)
|
|
31
|
+
else
|
|
32
|
+
::JSON.generate(data)
|
|
33
|
+
end
|
|
28
34
|
end
|
|
29
35
|
|
|
30
36
|
def match_content_type(env)
|
|
@@ -11,6 +11,8 @@ module Faraday
|
|
|
11
11
|
@parser_options = parser_options
|
|
12
12
|
@content_types = Array(content_type)
|
|
13
13
|
@preserve_raw = preserve_raw
|
|
14
|
+
|
|
15
|
+
process_parser_options
|
|
14
16
|
end
|
|
15
17
|
|
|
16
18
|
def on_complete(env)
|
|
@@ -27,7 +29,11 @@ module Faraday
|
|
|
27
29
|
end
|
|
28
30
|
|
|
29
31
|
def parse(body)
|
|
30
|
-
|
|
32
|
+
return if body.strip.empty?
|
|
33
|
+
|
|
34
|
+
decoder, method_name = @decoder_options
|
|
35
|
+
|
|
36
|
+
decoder.public_send(method_name, body, @parser_options || {})
|
|
31
37
|
end
|
|
32
38
|
|
|
33
39
|
def parse_response?(env)
|
|
@@ -47,6 +53,19 @@ module Faraday
|
|
|
47
53
|
type = type.split(';', 2).first if type.index(';')
|
|
48
54
|
type
|
|
49
55
|
end
|
|
56
|
+
|
|
57
|
+
def process_parser_options
|
|
58
|
+
@decoder_options = @parser_options&.delete(:decoder)
|
|
59
|
+
|
|
60
|
+
@decoder_options =
|
|
61
|
+
if @decoder_options.is_a?(Array) && @decoder_options.size >= 2
|
|
62
|
+
@decoder_options.slice(0, 2)
|
|
63
|
+
elsif @decoder_options.respond_to?(:load)
|
|
64
|
+
[@decoder_options, :load]
|
|
65
|
+
else
|
|
66
|
+
[::JSON, :parse]
|
|
67
|
+
end
|
|
68
|
+
end
|
|
50
69
|
end
|
|
51
70
|
end
|
|
52
71
|
end
|
data/lib/faraday/version.rb
CHANGED
|
@@ -132,4 +132,68 @@ RSpec.describe Faraday::Request::Json do
|
|
|
132
132
|
expect(result_type).to eq('application/xml; charset=utf-8')
|
|
133
133
|
end
|
|
134
134
|
end
|
|
135
|
+
|
|
136
|
+
context 'with encoder' do
|
|
137
|
+
let(:encoder) do
|
|
138
|
+
double('Encoder').tap do |e|
|
|
139
|
+
allow(e).to receive(:dump) { |s, opts| JSON.generate(s, opts) }
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
let(:result) { process(a: 1) }
|
|
144
|
+
|
|
145
|
+
context 'when encoder is passed as object' do
|
|
146
|
+
let(:middleware) { described_class.new(->(env) { Faraday::Response.new(env) }, { encoder: encoder }) }
|
|
147
|
+
|
|
148
|
+
it 'calls specified JSON encoder\'s dump method' do
|
|
149
|
+
expect(encoder).to receive(:dump).with({ a: 1 })
|
|
150
|
+
|
|
151
|
+
result
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
it 'encodes body' do
|
|
155
|
+
expect(result_body).to eq('{"a":1}')
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it 'adds content type' do
|
|
159
|
+
expect(result_type).to eq('application/json')
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
context 'when encoder is passed as an object-method pair' do
|
|
164
|
+
let(:middleware) { described_class.new(->(env) { Faraday::Response.new(env) }, { encoder: [encoder, :dump] }) }
|
|
165
|
+
|
|
166
|
+
it 'calls specified JSON encoder' do
|
|
167
|
+
expect(encoder).to receive(:dump).with({ a: 1 })
|
|
168
|
+
|
|
169
|
+
result
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it 'encodes body' do
|
|
173
|
+
expect(result_body).to eq('{"a":1}')
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
it 'adds content type' do
|
|
177
|
+
expect(result_type).to eq('application/json')
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
context 'when encoder is not passed' do
|
|
182
|
+
let(:middleware) { described_class.new(->(env) { Faraday::Response.new(env) }) }
|
|
183
|
+
|
|
184
|
+
it 'calls JSON.generate' do
|
|
185
|
+
expect(JSON).to receive(:generate).with({ a: 1 })
|
|
186
|
+
|
|
187
|
+
result
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
it 'encodes body' do
|
|
191
|
+
expect(result_body).to eq('{"a":1}')
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
it 'adds content type' do
|
|
195
|
+
expect(result_type).to eq('application/json')
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|
|
135
199
|
end
|
|
@@ -114,4 +114,76 @@ RSpec.describe Faraday::Response::Json, type: :response do
|
|
|
114
114
|
expect(response.body).to eq(result)
|
|
115
115
|
end
|
|
116
116
|
end
|
|
117
|
+
|
|
118
|
+
context 'with decoder' do
|
|
119
|
+
let(:decoder) do
|
|
120
|
+
double('Decoder').tap do |e|
|
|
121
|
+
allow(e).to receive(:load) { |s, opts| JSON.parse(s, opts) }
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
let(:body) { '{"a": 1}' }
|
|
126
|
+
let(:result) { { a: 1 } }
|
|
127
|
+
|
|
128
|
+
context 'when decoder is passed as object' do
|
|
129
|
+
let(:options) do
|
|
130
|
+
{
|
|
131
|
+
parser_options: {
|
|
132
|
+
decoder: decoder,
|
|
133
|
+
option: :option_value,
|
|
134
|
+
symbolize_names: true
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
it 'passes relevant options to specified decoder\'s load method' do
|
|
140
|
+
expect(decoder).to receive(:load)
|
|
141
|
+
.with(body, { option: :option_value, symbolize_names: true })
|
|
142
|
+
.and_return(result)
|
|
143
|
+
|
|
144
|
+
response = process(body)
|
|
145
|
+
expect(response.body).to eq(result)
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
context 'when decoder is passed as an object-method pair' do
|
|
150
|
+
let(:options) do
|
|
151
|
+
{
|
|
152
|
+
parser_options: {
|
|
153
|
+
decoder: [decoder, :load],
|
|
154
|
+
option: :option_value,
|
|
155
|
+
symbolize_names: true
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
it 'passes relevant options to specified decoder\'s method' do
|
|
161
|
+
expect(decoder).to receive(:load)
|
|
162
|
+
.with(body, { option: :option_value, symbolize_names: true })
|
|
163
|
+
.and_return(result)
|
|
164
|
+
|
|
165
|
+
response = process(body)
|
|
166
|
+
expect(response.body).to eq(result)
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
context 'when decoder is not passed' do
|
|
171
|
+
let(:options) do
|
|
172
|
+
{
|
|
173
|
+
parser_options: {
|
|
174
|
+
symbolize_names: true
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
it 'passes relevant options to JSON parse' do
|
|
180
|
+
expect(JSON).to receive(:parse)
|
|
181
|
+
.with(body, { symbolize_names: true })
|
|
182
|
+
.and_return(result)
|
|
183
|
+
|
|
184
|
+
response = process(body)
|
|
185
|
+
expect(response.body).to eq(result)
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
end
|
|
117
189
|
end
|
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.8.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: 2023-
|
|
13
|
+
date: 2023-12-20 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: base64
|
|
@@ -145,7 +145,7 @@ licenses:
|
|
|
145
145
|
- MIT
|
|
146
146
|
metadata:
|
|
147
147
|
homepage_uri: https://lostisland.github.io/faraday
|
|
148
|
-
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.
|
|
148
|
+
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.8.0
|
|
149
149
|
source_code_uri: https://github.com/lostisland/faraday
|
|
150
150
|
bug_tracker_uri: https://github.com/lostisland/faraday/issues
|
|
151
151
|
post_install_message:
|