faraday 1.7.0 → 2.0.0.alpha.pre.1
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 +111 -1
- data/README.md +16 -9
- data/examples/client_spec.rb +13 -0
- data/examples/client_test.rb +42 -3
- data/lib/faraday/adapter/test.rb +32 -43
- data/lib/faraday/adapter.rb +0 -5
- data/lib/faraday/connection.rb +8 -69
- data/lib/faraday/encoders/nested_params_encoder.rb +2 -2
- data/lib/faraday/error.rb +1 -0
- data/lib/faraday/file_part.rb +0 -6
- data/lib/faraday/logging/formatter.rb +1 -0
- data/lib/faraday/middleware.rb +0 -1
- data/lib/faraday/middleware_registry.rb +15 -79
- data/lib/faraday/options.rb +3 -3
- data/lib/faraday/rack_builder.rb +1 -1
- data/lib/faraday/request/authorization.rb +31 -38
- data/lib/faraday/request/instrumentation.rb +2 -0
- data/lib/faraday/request/json.rb +55 -0
- data/lib/faraday/request/multipart.rb +2 -0
- data/lib/faraday/request/retry.rb +3 -1
- data/lib/faraday/request/url_encoded.rb +2 -0
- data/lib/faraday/request.rb +13 -31
- data/lib/faraday/response/json.rb +54 -0
- data/lib/faraday/response/logger.rb +4 -4
- data/lib/faraday/response/raise_error.rb +9 -1
- data/lib/faraday/response.rb +8 -19
- data/lib/faraday/utils/headers.rb +1 -1
- data/lib/faraday/utils.rb +9 -4
- data/lib/faraday/version.rb +1 -1
- data/lib/faraday.rb +6 -37
- data/spec/faraday/adapter/test_spec.rb +32 -0
- data/spec/faraday/connection_spec.rb +78 -51
- data/spec/faraday/options/env_spec.rb +2 -2
- data/spec/faraday/rack_builder_spec.rb +5 -43
- data/spec/faraday/request/authorization_spec.rb +15 -29
- data/spec/faraday/request/instrumentation_spec.rb +5 -7
- data/spec/faraday/request/json_spec.rb +111 -0
- data/spec/faraday/request/multipart_spec.rb +5 -5
- data/spec/faraday/request/retry_spec.rb +13 -1
- data/spec/faraday/request_spec.rb +0 -11
- data/spec/faraday/response/json_spec.rb +117 -0
- data/spec/faraday/response/raise_error_spec.rb +7 -4
- data/spec/faraday/utils_spec.rb +1 -1
- data/spec/support/fake_safe_buffer.rb +1 -1
- data/spec/support/shared_examples/request_method.rb +5 -5
- metadata +11 -134
- data/lib/faraday/adapter/typhoeus.rb +0 -15
- data/lib/faraday/autoload.rb +0 -87
- data/lib/faraday/dependency_loader.rb +0 -37
- data/lib/faraday/request/basic_authentication.rb +0 -20
- data/lib/faraday/request/token_authentication.rb +0 -20
- data/spec/faraday/adapter/em_http_spec.rb +0 -49
- data/spec/faraday/adapter/em_synchrony_spec.rb +0 -18
- data/spec/faraday/adapter/excon_spec.rb +0 -49
- data/spec/faraday/adapter/httpclient_spec.rb +0 -73
- data/spec/faraday/adapter/net_http_spec.rb +0 -64
- data/spec/faraday/adapter/patron_spec.rb +0 -18
- data/spec/faraday/adapter/rack_spec.rb +0 -8
- data/spec/faraday/adapter/typhoeus_spec.rb +0 -7
- data/spec/faraday/response/middleware_spec.rb +0 -68
- data/spec/support/webmock_rack_app.rb +0 -68
@@ -157,7 +157,7 @@ RSpec.describe Faraday::Request::Multipart do
|
|
157
157
|
{
|
158
158
|
a: 1,
|
159
159
|
b: {
|
160
|
-
c: Faraday::
|
160
|
+
c: Faraday::FilePart.new(__FILE__, 'text/x-ruby', nil,
|
161
161
|
'Content-Disposition' => 'form-data; foo=1'),
|
162
162
|
d: 2
|
163
163
|
}
|
@@ -207,7 +207,7 @@ RSpec.describe Faraday::Request::Multipart do
|
|
207
207
|
let(:payload) do
|
208
208
|
{
|
209
209
|
json: Faraday::ParamPart.new(json, 'application/json'),
|
210
|
-
io: Faraday::
|
210
|
+
io: Faraday::FilePart.new(io, 'application/pdf')
|
211
211
|
}
|
212
212
|
end
|
213
213
|
|
@@ -239,7 +239,7 @@ RSpec.describe Faraday::Request::Multipart do
|
|
239
239
|
{
|
240
240
|
a: 1,
|
241
241
|
b: [{
|
242
|
-
c: Faraday::
|
242
|
+
c: Faraday::FilePart.new(__FILE__, 'text/x-ruby'),
|
243
243
|
d: 2
|
244
244
|
}]
|
245
245
|
}
|
@@ -284,8 +284,8 @@ RSpec.describe Faraday::Request::Multipart do
|
|
284
284
|
{
|
285
285
|
a: 1,
|
286
286
|
b: [
|
287
|
-
Faraday::
|
288
|
-
Faraday::
|
287
|
+
Faraday::FilePart.new(io, 'application/pdf'),
|
288
|
+
Faraday::FilePart.new(io, 'application/pdf')
|
289
289
|
]
|
290
290
|
}
|
291
291
|
end
|
@@ -32,6 +32,18 @@ RSpec.describe Faraday::Request::Retry do
|
|
32
32
|
|
33
33
|
it { expect(times_called).to eq(3) }
|
34
34
|
end
|
35
|
+
|
36
|
+
context 'and this is passed as a string custom exception' do
|
37
|
+
let(:options) { [{ exceptions: 'StandardError' }] }
|
38
|
+
|
39
|
+
it { expect(times_called).to eq(3) }
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'and a non-existent string custom exception is passed' do
|
43
|
+
let(:options) { [{ exceptions: 'WrongStandardErrorNotExisting' }] }
|
44
|
+
|
45
|
+
it { expect(times_called).to eq(1) }
|
46
|
+
end
|
35
47
|
end
|
36
48
|
|
37
49
|
context 'when an expected error happens' do
|
@@ -169,7 +181,7 @@ RSpec.describe Faraday::Request::Retry do
|
|
169
181
|
|
170
182
|
it 'UploadIO: should rewind files on retry' do
|
171
183
|
io = StringIO.new('Test data')
|
172
|
-
upload_io = Faraday::
|
184
|
+
upload_io = Faraday::FilePart.new(io, 'application/octet/stream')
|
173
185
|
|
174
186
|
rewound = 0
|
175
187
|
rewind = -> { rewound += 1 }
|
@@ -22,17 +22,6 @@ RSpec.describe Faraday::Request do
|
|
22
22
|
it { expect(subject.http_method).to eq(:post) }
|
23
23
|
end
|
24
24
|
|
25
|
-
describe 'deprecate method for HTTP method' do
|
26
|
-
let(:http_method) { :post }
|
27
|
-
let(:expected_warning) do
|
28
|
-
%r{WARNING: `Faraday::Request#method` is deprecated; use `#http_method` instead. It will be removed in or after version 2.0.\n`Faraday::Request#method` called from .+/spec/faraday/request_spec.rb:\d+.}
|
29
|
-
end
|
30
|
-
|
31
|
-
it { expect(subject.method).to eq(:post) }
|
32
|
-
|
33
|
-
it { expect { subject.method }.to output(expected_warning).to_stderr }
|
34
|
-
end
|
35
|
-
|
36
25
|
context 'when setting the url on setup with a URI' do
|
37
26
|
let(:block) { proc { |req| req.url URI.parse('foo.json?a=1') } }
|
38
27
|
|
@@ -0,0 +1,117 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe Faraday::Response::Json, type: :response do
|
4
|
+
let(:options) { {} }
|
5
|
+
let(:headers) { {} }
|
6
|
+
let(:middleware) do
|
7
|
+
described_class.new(lambda { |env|
|
8
|
+
Faraday::Response.new(env)
|
9
|
+
}, **options)
|
10
|
+
end
|
11
|
+
|
12
|
+
def process(body, content_type = 'application/json', options = {})
|
13
|
+
env = {
|
14
|
+
body: body, request: options,
|
15
|
+
request_headers: Faraday::Utils::Headers.new,
|
16
|
+
response_headers: Faraday::Utils::Headers.new(headers)
|
17
|
+
}
|
18
|
+
env[:response_headers]['content-type'] = content_type if content_type
|
19
|
+
yield(env) if block_given?
|
20
|
+
middleware.call(Faraday::Env.from(env))
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'no type matching' do
|
24
|
+
it "doesn't change nil body" do
|
25
|
+
expect(process(nil).body).to be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'nullifies empty body' do
|
29
|
+
expect(process('').body).to be_nil
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'parses json body' do
|
33
|
+
response = process('{"a":1}')
|
34
|
+
expect(response.body).to eq('a' => 1)
|
35
|
+
expect(response.env[:raw_body]).to be_nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'with preserving raw' do
|
40
|
+
let(:options) { { preserve_raw: true } }
|
41
|
+
|
42
|
+
it 'parses json body' do
|
43
|
+
response = process('{"a":1}')
|
44
|
+
expect(response.body).to eq('a' => 1)
|
45
|
+
expect(response.env[:raw_body]).to eq('{"a":1}')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'with default regexp type matching' do
|
50
|
+
it 'parses json body of correct type' do
|
51
|
+
response = process('{"a":1}', 'application/x-json')
|
52
|
+
expect(response.body).to eq('a' => 1)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'ignores json body of incorrect type' do
|
56
|
+
response = process('{"a":1}', 'text/json-xml')
|
57
|
+
expect(response.body).to eq('{"a":1}')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'with array type matching' do
|
62
|
+
let(:options) { { content_type: %w[a/b c/d] } }
|
63
|
+
|
64
|
+
it 'parses json body of correct type' do
|
65
|
+
expect(process('{"a":1}', 'a/b').body).to be_a(Hash)
|
66
|
+
expect(process('{"a":1}', 'c/d').body).to be_a(Hash)
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'ignores json body of incorrect type' do
|
70
|
+
expect(process('{"a":1}', 'a/d').body).not_to be_a(Hash)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'chokes on invalid json' do
|
75
|
+
expect { process('{!') }.to raise_error(Faraday::ParsingError)
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'includes the response on the ParsingError instance' do
|
79
|
+
process('{') { |env| env[:response] = Faraday::Response.new }
|
80
|
+
raise 'Parsing should have failed.'
|
81
|
+
rescue Faraday::ParsingError => e
|
82
|
+
expect(e.response).to be_a(Faraday::Response)
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'HEAD responses' do
|
86
|
+
it "nullifies the body if it's only one space" do
|
87
|
+
response = process(' ')
|
88
|
+
expect(response.body).to be_nil
|
89
|
+
end
|
90
|
+
|
91
|
+
it "nullifies the body if it's two spaces" do
|
92
|
+
response = process(' ')
|
93
|
+
expect(response.body).to be_nil
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context 'JSON options' do
|
98
|
+
let(:body) { '{"a": 1}' }
|
99
|
+
let(:result) { { a: 1 } }
|
100
|
+
let(:options) do
|
101
|
+
{
|
102
|
+
parser_options: {
|
103
|
+
symbolize_names: true
|
104
|
+
}
|
105
|
+
}
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'passes relevant options to JSON parse' do
|
109
|
+
expect(::JSON).to receive(:parse)
|
110
|
+
.with(body, options[:parser_options])
|
111
|
+
.and_return(result)
|
112
|
+
|
113
|
+
response = process(body)
|
114
|
+
expect(response.body).to eq(result)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -139,7 +139,7 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
139
139
|
Faraday.new do |b|
|
140
140
|
b.response :raise_error
|
141
141
|
b.adapter :test do |stub|
|
142
|
-
stub.post(
|
142
|
+
stub.post(url, request_body, request_headers) do
|
143
143
|
[400, { 'X-Reason' => 'because' }, 'keep looking']
|
144
144
|
end
|
145
145
|
end
|
@@ -147,11 +147,13 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
147
147
|
end
|
148
148
|
let(:request_body) { JSON.generate({ 'item' => 'sth' }) }
|
149
149
|
let(:request_headers) { { 'Authorization' => 'Basic 123' } }
|
150
|
+
let(:url_path) { 'request' }
|
151
|
+
let(:query_params) { 'full=true' }
|
152
|
+
let(:url) { "#{url_path}?#{query_params}" }
|
150
153
|
|
151
154
|
subject(:perform_request) do
|
152
|
-
conn.post
|
155
|
+
conn.post url do |req|
|
153
156
|
req.headers['Authorization'] = 'Basic 123'
|
154
|
-
req.params[:full] = true
|
155
157
|
req.body = request_body
|
156
158
|
end
|
157
159
|
end
|
@@ -159,7 +161,8 @@ RSpec.describe Faraday::Response::RaiseError do
|
|
159
161
|
it 'returns the request info in the exception' do
|
160
162
|
expect { perform_request }.to raise_error(Faraday::BadRequestError) do |ex|
|
161
163
|
expect(ex.response[:request][:method]).to eq(:post)
|
162
|
-
expect(ex.response[:request][:
|
164
|
+
expect(ex.response[:request][:url]).to eq(URI("http:/#{url}"))
|
165
|
+
expect(ex.response[:request][:url_path]).to eq("/#{url_path}")
|
163
166
|
expect(ex.response[:request][:params]).to eq({ 'full' => 'true' })
|
164
167
|
expect(ex.response[:request][:headers]).to match(a_hash_including(request_headers))
|
165
168
|
expect(ex.response[:request][:body]).to eq(request_body)
|
data/spec/faraday/utils_spec.rb
CHANGED
@@ -4,7 +4,7 @@ RSpec.describe Faraday::Utils do
|
|
4
4
|
describe 'headers parsing' do
|
5
5
|
let(:multi_response_headers) do
|
6
6
|
"HTTP/1.x 500 OK\r\nContent-Type: text/html; charset=UTF-8\r\n" \
|
7
|
-
|
7
|
+
"HTTP/1.x 200 OK\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n"
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'parse headers for aggregated responses' do
|
@@ -79,7 +79,7 @@ shared_examples 'a request method' do |http_method|
|
|
79
79
|
|
80
80
|
on_feature :request_body_on_query_methods do
|
81
81
|
it 'sends request body' do
|
82
|
-
request_stub.with(
|
82
|
+
request_stub.with({ body: 'test' })
|
83
83
|
res = if query_or_body == :body
|
84
84
|
conn.public_send(http_method, '/', 'test')
|
85
85
|
else
|
@@ -93,7 +93,7 @@ shared_examples 'a request method' do |http_method|
|
|
93
93
|
|
94
94
|
it 'sends url encoded parameters' do
|
95
95
|
payload = { name: 'zack' }
|
96
|
-
request_stub.with(
|
96
|
+
request_stub.with({ query_or_body => payload })
|
97
97
|
res = conn.public_send(http_method, '/', payload)
|
98
98
|
if query_or_body == :query
|
99
99
|
expect(res.env.request_body).to be_nil
|
@@ -104,7 +104,7 @@ shared_examples 'a request method' do |http_method|
|
|
104
104
|
|
105
105
|
it 'sends url encoded nested parameters' do
|
106
106
|
payload = { name: { first: 'zack' } }
|
107
|
-
request_stub.with(
|
107
|
+
request_stub.with({ query_or_body => payload })
|
108
108
|
conn.public_send(http_method, '/', payload)
|
109
109
|
end
|
110
110
|
|
@@ -199,11 +199,11 @@ shared_examples 'a request method' do |http_method|
|
|
199
199
|
@payload2 = { b: '2' }
|
200
200
|
|
201
201
|
request_stub
|
202
|
-
.with(
|
202
|
+
.with({ query_or_body => @payload1 })
|
203
203
|
.to_return(body: @payload1.to_json)
|
204
204
|
|
205
205
|
stub_request(http_method, remote)
|
206
|
-
.with(
|
206
|
+
.with({ query_or_body => @payload2 })
|
207
207
|
.to_return(body: @payload2.to_json)
|
208
208
|
|
209
209
|
conn.in_parallel do
|
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:
|
4
|
+
version: 2.0.0.alpha.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "@technoweenie"
|
@@ -10,120 +10,8 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-10-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: faraday-em_http
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
requirements:
|
19
|
-
- - "~>"
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '1.0'
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
requirements:
|
26
|
-
- - "~>"
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
version: '1.0'
|
29
|
-
- !ruby/object:Gem::Dependency
|
30
|
-
name: faraday-em_synchrony
|
31
|
-
requirement: !ruby/object:Gem::Requirement
|
32
|
-
requirements:
|
33
|
-
- - "~>"
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version: '1.0'
|
36
|
-
type: :runtime
|
37
|
-
prerelease: false
|
38
|
-
version_requirements: !ruby/object:Gem::Requirement
|
39
|
-
requirements:
|
40
|
-
- - "~>"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '1.0'
|
43
|
-
- !ruby/object:Gem::Dependency
|
44
|
-
name: faraday-excon
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '1.1'
|
50
|
-
type: :runtime
|
51
|
-
prerelease: false
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
53
|
-
requirements:
|
54
|
-
- - "~>"
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: '1.1'
|
57
|
-
- !ruby/object:Gem::Dependency
|
58
|
-
name: faraday-httpclient
|
59
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
-
requirements:
|
61
|
-
- - "~>"
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: 1.0.1
|
64
|
-
type: :runtime
|
65
|
-
prerelease: false
|
66
|
-
version_requirements: !ruby/object:Gem::Requirement
|
67
|
-
requirements:
|
68
|
-
- - "~>"
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: 1.0.1
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: faraday-net_http
|
73
|
-
requirement: !ruby/object:Gem::Requirement
|
74
|
-
requirements:
|
75
|
-
- - "~>"
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '1.0'
|
78
|
-
type: :runtime
|
79
|
-
prerelease: false
|
80
|
-
version_requirements: !ruby/object:Gem::Requirement
|
81
|
-
requirements:
|
82
|
-
- - "~>"
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: '1.0'
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: faraday-net_http_persistent
|
87
|
-
requirement: !ruby/object:Gem::Requirement
|
88
|
-
requirements:
|
89
|
-
- - "~>"
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: '1.1'
|
92
|
-
type: :runtime
|
93
|
-
prerelease: false
|
94
|
-
version_requirements: !ruby/object:Gem::Requirement
|
95
|
-
requirements:
|
96
|
-
- - "~>"
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '1.1'
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
|
-
name: faraday-patron
|
101
|
-
requirement: !ruby/object:Gem::Requirement
|
102
|
-
requirements:
|
103
|
-
- - "~>"
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: '1.0'
|
106
|
-
type: :runtime
|
107
|
-
prerelease: false
|
108
|
-
version_requirements: !ruby/object:Gem::Requirement
|
109
|
-
requirements:
|
110
|
-
- - "~>"
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: '1.0'
|
113
|
-
- !ruby/object:Gem::Dependency
|
114
|
-
name: faraday-rack
|
115
|
-
requirement: !ruby/object:Gem::Requirement
|
116
|
-
requirements:
|
117
|
-
- - "~>"
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: '1.0'
|
120
|
-
type: :runtime
|
121
|
-
prerelease: false
|
122
|
-
version_requirements: !ruby/object:Gem::Requirement
|
123
|
-
requirements:
|
124
|
-
- - "~>"
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version: '1.0'
|
127
15
|
- !ruby/object:Gem::Dependency
|
128
16
|
name: multipart-post
|
129
17
|
requirement: !ruby/object:Gem::Requirement
|
@@ -173,11 +61,8 @@ files:
|
|
173
61
|
- lib/faraday.rb
|
174
62
|
- lib/faraday/adapter.rb
|
175
63
|
- lib/faraday/adapter/test.rb
|
176
|
-
- lib/faraday/adapter/typhoeus.rb
|
177
64
|
- lib/faraday/adapter_registry.rb
|
178
|
-
- lib/faraday/autoload.rb
|
179
65
|
- lib/faraday/connection.rb
|
180
|
-
- lib/faraday/dependency_loader.rb
|
181
66
|
- lib/faraday/encoders/flat_params_encoder.rb
|
182
67
|
- lib/faraday/encoders/nested_params_encoder.rb
|
183
68
|
- lib/faraday/error.rb
|
@@ -197,13 +82,13 @@ files:
|
|
197
82
|
- lib/faraday/rack_builder.rb
|
198
83
|
- lib/faraday/request.rb
|
199
84
|
- lib/faraday/request/authorization.rb
|
200
|
-
- lib/faraday/request/basic_authentication.rb
|
201
85
|
- lib/faraday/request/instrumentation.rb
|
86
|
+
- lib/faraday/request/json.rb
|
202
87
|
- lib/faraday/request/multipart.rb
|
203
88
|
- lib/faraday/request/retry.rb
|
204
|
-
- lib/faraday/request/token_authentication.rb
|
205
89
|
- lib/faraday/request/url_encoded.rb
|
206
90
|
- lib/faraday/response.rb
|
91
|
+
- lib/faraday/response/json.rb
|
207
92
|
- lib/faraday/response/logger.rb
|
208
93
|
- lib/faraday/response/raise_error.rb
|
209
94
|
- lib/faraday/utils.rb
|
@@ -211,15 +96,7 @@ files:
|
|
211
96
|
- lib/faraday/utils/params_hash.rb
|
212
97
|
- lib/faraday/version.rb
|
213
98
|
- spec/external_adapters/faraday_specs_setup.rb
|
214
|
-
- spec/faraday/adapter/em_http_spec.rb
|
215
|
-
- spec/faraday/adapter/em_synchrony_spec.rb
|
216
|
-
- spec/faraday/adapter/excon_spec.rb
|
217
|
-
- spec/faraday/adapter/httpclient_spec.rb
|
218
|
-
- spec/faraday/adapter/net_http_spec.rb
|
219
|
-
- spec/faraday/adapter/patron_spec.rb
|
220
|
-
- spec/faraday/adapter/rack_spec.rb
|
221
99
|
- spec/faraday/adapter/test_spec.rb
|
222
|
-
- spec/faraday/adapter/typhoeus_spec.rb
|
223
100
|
- spec/faraday/adapter_registry_spec.rb
|
224
101
|
- spec/faraday/adapter_spec.rb
|
225
102
|
- spec/faraday/composite_read_io_spec.rb
|
@@ -235,12 +112,13 @@ files:
|
|
235
112
|
- spec/faraday/rack_builder_spec.rb
|
236
113
|
- spec/faraday/request/authorization_spec.rb
|
237
114
|
- spec/faraday/request/instrumentation_spec.rb
|
115
|
+
- spec/faraday/request/json_spec.rb
|
238
116
|
- spec/faraday/request/multipart_spec.rb
|
239
117
|
- spec/faraday/request/retry_spec.rb
|
240
118
|
- spec/faraday/request/url_encoded_spec.rb
|
241
119
|
- spec/faraday/request_spec.rb
|
120
|
+
- spec/faraday/response/json_spec.rb
|
242
121
|
- spec/faraday/response/logger_spec.rb
|
243
|
-
- spec/faraday/response/middleware_spec.rb
|
244
122
|
- spec/faraday/response/raise_error_spec.rb
|
245
123
|
- spec/faraday/response_spec.rb
|
246
124
|
- spec/faraday/utils/headers_spec.rb
|
@@ -254,13 +132,12 @@ files:
|
|
254
132
|
- spec/support/shared_examples/params_encoder.rb
|
255
133
|
- spec/support/shared_examples/request_method.rb
|
256
134
|
- spec/support/streaming_response_checker.rb
|
257
|
-
- spec/support/webmock_rack_app.rb
|
258
135
|
homepage: https://lostisland.github.io/faraday
|
259
136
|
licenses:
|
260
137
|
- MIT
|
261
138
|
metadata:
|
262
139
|
homepage_uri: https://lostisland.github.io/faraday
|
263
|
-
changelog_uri: https://github.com/lostisland/faraday/releases/tag/
|
140
|
+
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.0.0.alpha.pre.1
|
264
141
|
source_code_uri: https://github.com/lostisland/faraday
|
265
142
|
bug_tracker_uri: https://github.com/lostisland/faraday/issues
|
266
143
|
post_install_message:
|
@@ -272,14 +149,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
272
149
|
requirements:
|
273
150
|
- - ">="
|
274
151
|
- !ruby/object:Gem::Version
|
275
|
-
version: '2.
|
152
|
+
version: '2.6'
|
276
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
277
154
|
requirements:
|
278
|
-
- - "
|
155
|
+
- - ">"
|
279
156
|
- !ruby/object:Gem::Version
|
280
|
-
version:
|
157
|
+
version: 1.3.1
|
281
158
|
requirements: []
|
282
|
-
rubygems_version: 3.
|
159
|
+
rubygems_version: 3.1.6
|
283
160
|
signing_key:
|
284
161
|
specification_version: 4
|
285
162
|
summary: HTTP/REST API client library.
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Faraday
|
4
|
-
class Adapter
|
5
|
-
# Typhoeus adapter. This class is just a stub, the real adapter is in
|
6
|
-
# https://github.com/typhoeus/typhoeus/blob/master/lib/typhoeus/adapters/faraday.rb
|
7
|
-
class Typhoeus < Faraday::Adapter
|
8
|
-
# Needs to define this method in order to support Typhoeus <= 1.3.0
|
9
|
-
def call; end
|
10
|
-
|
11
|
-
dependency 'typhoeus'
|
12
|
-
dependency 'typhoeus/adapters/faraday'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
data/lib/faraday/autoload.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Faraday
|
4
|
-
# Adds the ability for other modules to manage autoloadable
|
5
|
-
# constants.
|
6
|
-
#
|
7
|
-
# @api private
|
8
|
-
module AutoloadHelper
|
9
|
-
# Registers the constants to be auto loaded.
|
10
|
-
#
|
11
|
-
# @param prefix [String] The require prefix. If the path is inside Faraday,
|
12
|
-
# then it will be prefixed with the root path of this loaded
|
13
|
-
# Faraday version.
|
14
|
-
# @param options [{ Symbol => String }] library names.
|
15
|
-
#
|
16
|
-
# @example
|
17
|
-
#
|
18
|
-
# Faraday.autoload_all 'faraday/foo',
|
19
|
-
# Bar: 'bar'
|
20
|
-
#
|
21
|
-
# # requires faraday/foo/bar to load Faraday::Bar.
|
22
|
-
# Faraday::Bar
|
23
|
-
#
|
24
|
-
# @return [void]
|
25
|
-
def autoload_all(prefix, options)
|
26
|
-
if prefix.match? %r{^faraday(/|$)}i
|
27
|
-
prefix = File.join(Faraday.root_path, prefix)
|
28
|
-
end
|
29
|
-
|
30
|
-
options.each do |const_name, path|
|
31
|
-
autoload const_name, File.join(prefix, path)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# Loads each autoloaded constant. If thread safety is a concern,
|
36
|
-
# wrap this in a Mutex.
|
37
|
-
#
|
38
|
-
# @return [void]
|
39
|
-
def load_autoloaded_constants
|
40
|
-
constants.each do |const|
|
41
|
-
const_get(const) if autoload?(const)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# Filters the module's contents with those that have been already
|
46
|
-
# autoloaded.
|
47
|
-
#
|
48
|
-
# @return [Array<Class, Module>]
|
49
|
-
def all_loaded_constants
|
50
|
-
constants
|
51
|
-
.map { |c| const_get(c) }
|
52
|
-
.select { |a| a.respond_to?(:loaded?) && a.loaded? }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
# Adapter is the base class for all Faraday adapters.
|
57
|
-
# @see lib/faraday/adapter.rb Original class location
|
58
|
-
class Adapter
|
59
|
-
extend AutoloadHelper
|
60
|
-
autoload_all 'faraday/adapter',
|
61
|
-
Typhoeus: 'typhoeus',
|
62
|
-
Test: 'test'
|
63
|
-
end
|
64
|
-
|
65
|
-
# Request represents a single HTTP request for a Faraday adapter to make.
|
66
|
-
# @see lib/faraday/request.rb Original class location
|
67
|
-
class Request
|
68
|
-
extend AutoloadHelper
|
69
|
-
autoload_all 'faraday/request',
|
70
|
-
UrlEncoded: 'url_encoded',
|
71
|
-
Multipart: 'multipart',
|
72
|
-
Retry: 'retry',
|
73
|
-
Authorization: 'authorization',
|
74
|
-
BasicAuthentication: 'basic_authentication',
|
75
|
-
TokenAuthentication: 'token_authentication',
|
76
|
-
Instrumentation: 'instrumentation'
|
77
|
-
end
|
78
|
-
|
79
|
-
# Response represents the returned value of a sent Faraday request.
|
80
|
-
# @see lib/faraday/response.rb Original class location
|
81
|
-
class Response
|
82
|
-
extend AutoloadHelper
|
83
|
-
autoload_all 'faraday/response',
|
84
|
-
RaiseError: 'raise_error',
|
85
|
-
Logger: 'logger'
|
86
|
-
end
|
87
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Faraday
|
4
|
-
# DependencyLoader helps Faraday adapters and middleware load dependencies.
|
5
|
-
module DependencyLoader
|
6
|
-
attr_reader :load_error
|
7
|
-
|
8
|
-
# Executes a block which should try to require and reference dependent
|
9
|
-
# libraries
|
10
|
-
def dependency(lib = nil)
|
11
|
-
lib ? require(lib) : yield
|
12
|
-
rescue LoadError, NameError => e
|
13
|
-
self.load_error = e
|
14
|
-
end
|
15
|
-
|
16
|
-
def new(*)
|
17
|
-
unless loaded?
|
18
|
-
raise "missing dependency for #{self}: #{load_error.message}"
|
19
|
-
end
|
20
|
-
|
21
|
-
super
|
22
|
-
end
|
23
|
-
|
24
|
-
def loaded?
|
25
|
-
load_error.nil?
|
26
|
-
end
|
27
|
-
|
28
|
-
def inherited(subclass)
|
29
|
-
super
|
30
|
-
subclass.send(:load_error=, load_error)
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
attr_writer :load_error
|
36
|
-
end
|
37
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'base64'
|
4
|
-
|
5
|
-
module Faraday
|
6
|
-
class Request
|
7
|
-
# Authorization middleware for Basic Authentication.
|
8
|
-
class BasicAuthentication < load_middleware(:authorization)
|
9
|
-
# @param login [String]
|
10
|
-
# @param pass [String]
|
11
|
-
#
|
12
|
-
# @return [String] a Basic Authentication header line
|
13
|
-
def self.header(login, pass)
|
14
|
-
value = Base64.encode64([login, pass].join(':'))
|
15
|
-
value.delete!("\n")
|
16
|
-
super(:Basic, value)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|