faraday 1.0.0 → 1.0.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/README.md +1 -1
- data/lib/faraday.rb +2 -2
- data/lib/faraday/adapter/em_http.rb +2 -1
- data/lib/faraday/adapter/httpclient.rb +2 -1
- data/lib/faraday/adapter/net_http.rb +18 -8
- data/lib/faraday/adapter/typhoeus.rb +1 -1
- data/lib/faraday/adapter_registry.rb +3 -1
- data/lib/faraday/request/authorization.rb +3 -1
- data/lib/faraday/request/multipart.rb +1 -1
- data/lib/faraday/request/url_encoded.rb +3 -1
- data/lib/faraday/response.rb +4 -1
- data/lib/faraday/utils.rb +9 -1
- data/spec/faraday/adapter/em_http_spec.rb +1 -1
- data/spec/faraday/adapter/em_synchrony_spec.rb +1 -1
- data/spec/faraday/adapter/patron_spec.rb +1 -1
- data/spec/faraday/rack_builder_spec.rb +1 -1
- data/spec/faraday/request/url_encoded_spec.rb +13 -0
- data/spec/faraday/response/middleware_spec.rb +16 -0
- metadata +5 -5
- data/UPGRADING.md +0 -55
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d23ec0aefc40d23ccc4410db08092bd29e477309fb8aa6794b3c8401961de10
|
4
|
+
data.tar.gz: c33ca7313dcccbf148266a80aa4e12d4cba96a4feb96ecfc3e8ff50fa06756c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8058c22dc6e78bc3d46a9c8a22c458656a1380a4aed62b31e11b9b054fc6791373dd103276fc018148daed3934a724bcb39390bbe88e2762281ff810b61b408d
|
7
|
+
data.tar.gz: 341f3b44148f666bb03f8e7b232fd92e26b8c34d758090e6e82f1276af29ff17d4f62bdb58871254ba48b2232ab58269c71db08df7a4b0c35c53f2c7e9bbe7e8
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# 
|
1
|
+
# [][website]
|
2
2
|
|
3
3
|
[](https://rubygems.org/gems/faraday)
|
4
4
|

|
data/lib/faraday.rb
CHANGED
@@ -19,7 +19,7 @@ require 'faraday/dependency_loader'
|
|
19
19
|
# conn.get '/'
|
20
20
|
#
|
21
21
|
module Faraday
|
22
|
-
VERSION = '1.0.
|
22
|
+
VERSION = '1.0.1'
|
23
23
|
METHODS_WITH_QUERY = %w[get head delete trace].freeze
|
24
24
|
METHODS_WITH_BODY = %w[post put patch].freeze
|
25
25
|
|
@@ -153,7 +153,7 @@ module Faraday
|
|
153
153
|
@default_connection_options = ConnectionOptions.from(options)
|
154
154
|
end
|
155
155
|
|
156
|
-
unless
|
156
|
+
unless defined?(::Faraday::Timer)
|
157
157
|
require 'timeout'
|
158
158
|
Timer = Timeout
|
159
159
|
end
|
@@ -142,7 +142,8 @@ module Faraday
|
|
142
142
|
|
143
143
|
raise Faraday::ConnectionFailed, e
|
144
144
|
rescue StandardError => e
|
145
|
-
if defined?(OpenSSL
|
145
|
+
if defined?(::OpenSSL::SSL::SSLError) && \
|
146
|
+
e.is_a?(::OpenSSL::SSL::SSLError)
|
146
147
|
raise Faraday::SSLError, e
|
147
148
|
end
|
148
149
|
|
@@ -66,7 +66,8 @@ module Faraday
|
|
66
66
|
rescue Errno::EADDRNOTAVAIL, Errno::ECONNREFUSED, IOError, SocketError
|
67
67
|
raise Faraday::ConnectionFailed, $ERROR_INFO
|
68
68
|
rescue StandardError => e
|
69
|
-
if defined?(OpenSSL
|
69
|
+
if defined?(::OpenSSL::SSL::SSLError) && \
|
70
|
+
e.is_a?(::OpenSSL::SSL::SSLError)
|
70
71
|
raise Faraday::SSLError, e
|
71
72
|
end
|
72
73
|
|
@@ -30,8 +30,10 @@ module Faraday
|
|
30
30
|
Zlib::GzipFile::Error
|
31
31
|
]
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
if defined?(::OpenSSL::SSL::SSLError)
|
34
|
+
exceptions << ::OpenSSL::SSL::SSLError
|
35
|
+
end
|
36
|
+
exceptions << ::Net::OpenTimeout if defined?(::Net::OpenTimeout)
|
35
37
|
|
36
38
|
NET_HTTP_EXCEPTIONS = exceptions.freeze
|
37
39
|
|
@@ -137,16 +139,24 @@ module Faraday
|
|
137
139
|
end
|
138
140
|
|
139
141
|
def request_via_get_method(http, env, &block)
|
140
|
-
|
142
|
+
# Must use Net::HTTP#start and pass it a block otherwise the server's
|
143
|
+
# TCP socket does not close correctly.
|
144
|
+
http.start do |opened_http|
|
145
|
+
opened_http.get env[:url].request_uri, env[:request_headers], &block
|
146
|
+
end
|
141
147
|
end
|
142
148
|
|
143
149
|
def request_via_request_method(http, env, &block)
|
144
|
-
|
145
|
-
|
146
|
-
|
150
|
+
# Must use Net::HTTP#start and pass it a block otherwise the server's
|
151
|
+
# TCP socket does not close correctly.
|
152
|
+
http.start do |opened_http|
|
153
|
+
if block_given?
|
154
|
+
opened_http.request create_request(env) do |response|
|
155
|
+
response.read_body(&block)
|
156
|
+
end
|
157
|
+
else
|
158
|
+
opened_http.request create_request(env)
|
147
159
|
end
|
148
|
-
else
|
149
|
-
http.request create_request(env)
|
150
160
|
end
|
151
161
|
end
|
152
162
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Faraday
|
4
4
|
class Adapter
|
5
5
|
# Typhoeus adapter. This class is just a stub, the real adapter is in
|
6
|
-
# https://github.com/
|
6
|
+
# https://github.com/typhoeus/typhoeus/blob/master/lib/typhoeus/adapters/faraday.rb
|
7
7
|
class Typhoeus < Faraday::Adapter
|
8
8
|
# Needs to define this method in order to support Typhoeus <= 1.3.0
|
9
9
|
def call; end
|
@@ -4,7 +4,9 @@ module Faraday
|
|
4
4
|
class Request
|
5
5
|
# Request middleware for the Authorization HTTP header
|
6
6
|
class Authorization < Faraday::Middleware
|
7
|
-
|
7
|
+
unless defined?(::Faraday::Request::Authorization::KEY)
|
8
|
+
KEY = 'Authorization'
|
9
|
+
end
|
8
10
|
|
9
11
|
# @param type [String, Symbol]
|
10
12
|
# @param token [String, Symbol, Hash]
|
@@ -8,7 +8,7 @@ module Faraday
|
|
8
8
|
# Middleware for supporting multi-part requests.
|
9
9
|
class Multipart < UrlEncoded
|
10
10
|
self.mime_type = 'multipart/form-data'
|
11
|
-
unless defined?
|
11
|
+
unless defined?(::Faraday::Request::Multipart::DEFAULT_BOUNDARY_PREFIX)
|
12
12
|
DEFAULT_BOUNDARY_PREFIX = '-----------RubyMultipartPost'
|
13
13
|
end
|
14
14
|
|
@@ -4,7 +4,9 @@ module Faraday
|
|
4
4
|
class Request
|
5
5
|
# Middleware for supporting urlencoded requests.
|
6
6
|
class UrlEncoded < Faraday::Middleware
|
7
|
-
|
7
|
+
unless defined?(::Faraday::Request::UrlEncoded::CONTENT_TYPE)
|
8
|
+
CONTENT_TYPE = 'Content-Type'
|
9
|
+
end
|
8
10
|
|
9
11
|
class << self
|
10
12
|
attr_accessor :mime_type
|
data/lib/faraday/response.rb
CHANGED
@@ -15,8 +15,11 @@ module Faraday
|
|
15
15
|
|
16
16
|
# Override this to modify the environment after the response has finished.
|
17
17
|
# Calls the `parse` method if defined
|
18
|
+
# `parse` method can be defined as private, public and protected
|
18
19
|
def on_complete(env)
|
19
|
-
|
20
|
+
return unless respond_to?(:parse, true) && env.parse_body?
|
21
|
+
|
22
|
+
env.body = parse(env.body)
|
20
23
|
end
|
21
24
|
end
|
22
25
|
|
data/lib/faraday/utils.rb
CHANGED
@@ -16,12 +16,20 @@ module Faraday
|
|
16
16
|
NestedParamsEncoder.encode(params)
|
17
17
|
end
|
18
18
|
|
19
|
+
def default_space_encoding
|
20
|
+
@default_space_encoding ||= '+'
|
21
|
+
end
|
22
|
+
|
23
|
+
class << self
|
24
|
+
attr_writer :default_space_encoding
|
25
|
+
end
|
26
|
+
|
19
27
|
ESCAPE_RE = /[^a-zA-Z0-9 .~_-]/.freeze
|
20
28
|
|
21
29
|
def escape(str)
|
22
30
|
str.to_s.gsub(ESCAPE_RE) do |match|
|
23
31
|
'%' + match.unpack('H2' * match.bytesize).join('%').upcase
|
24
|
-
end.
|
32
|
+
end.gsub(' ', default_space_encoding)
|
25
33
|
end
|
26
34
|
|
27
35
|
def unescape(str)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
RSpec.describe Faraday::Adapter::EMHttp do
|
3
|
+
RSpec.describe Faraday::Adapter::EMHttp, unless: defined?(JRUBY_VERSION) do
|
4
4
|
features :request_body_on_query_methods, :reason_phrase_parse, :trace_method,
|
5
5
|
:skip_response_body_on_head, :parallel, :local_socket_binding
|
6
6
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
RSpec.describe Faraday::Adapter::EMSynchrony do
|
3
|
+
RSpec.describe Faraday::Adapter::EMSynchrony, unless: defined?(JRUBY_VERSION) do
|
4
4
|
features :request_body_on_query_methods, :reason_phrase_parse,
|
5
5
|
:skip_response_body_on_head, :parallel, :local_socket_binding
|
6
6
|
|
@@ -189,7 +189,7 @@ RSpec.describe Faraday::RackBuilder do
|
|
189
189
|
|
190
190
|
it 'raises an error while making a request' do
|
191
191
|
expect { conn.get('/') }.to raise_error(RuntimeError) do |err|
|
192
|
-
expect(err.message).to
|
192
|
+
expect(err.message).to match(%r{missing dependency for Broken: .+ -- zomg/i_dont/exist})
|
193
193
|
end
|
194
194
|
end
|
195
195
|
end
|
@@ -67,4 +67,17 @@ RSpec.describe Faraday::Request::UrlEncoded do
|
|
67
67
|
response = conn.post('/echo', 'a' => { 'b' => { 'c' => ['d'] } })
|
68
68
|
expect(response.body).to eq('a%5Bb%5D%5Bc%5D%5B%5D=d')
|
69
69
|
end
|
70
|
+
|
71
|
+
context 'customising default_space_encoding' do
|
72
|
+
around do |example|
|
73
|
+
Faraday::Utils.default_space_encoding = '%20'
|
74
|
+
example.run
|
75
|
+
Faraday::Utils.default_space_encoding = nil
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'uses the custom character to encode spaces' do
|
79
|
+
response = conn.post('/echo', str: 'apple banana')
|
80
|
+
expect(response.body).to eq('str=apple%20banana')
|
81
|
+
end
|
82
|
+
end
|
70
83
|
end
|
@@ -26,6 +26,22 @@ RSpec.describe Faraday::Response::Middleware do
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
context 'with a custom ResponseMiddleware and private parse' do
|
30
|
+
let(:custom_middleware) do
|
31
|
+
Class.new(Faraday::Response::Middleware) do
|
32
|
+
private
|
33
|
+
|
34
|
+
def parse(body)
|
35
|
+
body.upcase
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'parses the response' do
|
41
|
+
expect(conn.get('ok').body).to eq('<BODY></BODY>')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
29
45
|
context 'with a custom ResponseMiddleware but empty response' do
|
30
46
|
let(:custom_middleware) do
|
31
47
|
Class.new(Faraday::Response::Middleware) 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: 1.0.
|
4
|
+
version: 1.0.1
|
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: 2020-
|
13
|
+
date: 2020-03-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: multipart-post
|
@@ -42,7 +42,6 @@ files:
|
|
42
42
|
- LICENSE.md
|
43
43
|
- README.md
|
44
44
|
- Rakefile
|
45
|
-
- UPGRADING.md
|
46
45
|
- examples/client_spec.rb
|
47
46
|
- examples/client_test.rb
|
48
47
|
- lib/faraday.rb
|
@@ -143,13 +142,14 @@ licenses:
|
|
143
142
|
- MIT
|
144
143
|
metadata:
|
145
144
|
homepage_uri: https://lostisland.github.io/faraday
|
146
|
-
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v1.0.
|
145
|
+
changelog_uri: https://github.com/lostisland/faraday/releases/tag/v1.0.1
|
147
146
|
source_code_uri: https://github.com/lostisland/faraday
|
148
147
|
bug_tracker_uri: https://github.com/lostisland/faraday/issues
|
149
148
|
post_install_message:
|
150
149
|
rdoc_options: []
|
151
150
|
require_paths:
|
152
151
|
- lib
|
152
|
+
- spec/external_adapters
|
153
153
|
required_ruby_version: !ruby/object:Gem::Requirement
|
154
154
|
requirements:
|
155
155
|
- - ">="
|
@@ -161,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
161
|
- !ruby/object:Gem::Version
|
162
162
|
version: '0'
|
163
163
|
requirements: []
|
164
|
-
rubygems_version: 3.
|
164
|
+
rubygems_version: 3.0.3
|
165
165
|
signing_key:
|
166
166
|
specification_version: 4
|
167
167
|
summary: HTTP/REST API client library.
|
data/UPGRADING.md
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
## Faraday 1.0
|
2
|
-
|
3
|
-
### Errors
|
4
|
-
* Removes sub-class constants definition from `Faraday::Error`. A sub-class (e.g. `ClientError`) was previously accessible
|
5
|
-
either through the `Faraday` module (e.g. `Faraday::ClientError`) or through the `Faraday::Error` class (e.g. `Faraday::Error::ClientError`).
|
6
|
-
The latter is no longer available and the former should be used instead, so check your `rescue`s.
|
7
|
-
* Introduces a new `Faraday::ServerError` (5xx status codes) alongside the existing `Faraday::ClientError` (4xx status codes).
|
8
|
-
Please note `Faraday::ClientError` was previously used for both.
|
9
|
-
* Introduces new Errors that describe the most common REST status codes:
|
10
|
-
* Faraday::BadRequestError (400)
|
11
|
-
* Faraday::UnauthorizedError (401)
|
12
|
-
* Faraday::ForbiddenError (403)
|
13
|
-
* Faraday::ProxyAuthError (407). Please note this raised a `Faraday::ConnectionFailed` before.
|
14
|
-
* Faraday::ConflictError (409)
|
15
|
-
* Faraday::UnprocessableEntityError (422)
|
16
|
-
* The following error classes have changed the hierarchy to better mirror their real-world usage and semantic meaning:
|
17
|
-
* TimeoutError < ServerError (was < ClientError)
|
18
|
-
* ConnectionFailed < Error (was < ClientError)
|
19
|
-
* SSLError < Error (was < ClientError)
|
20
|
-
* ParsingError < Error (was < ClientError)
|
21
|
-
* RetriableResponse < Error (was < ClientError)
|
22
|
-
|
23
|
-
### Custom adapters
|
24
|
-
If you have written a custom adapter, please be aware that `env.body` is now an alias to the two new properties `request_body` and `response_body`.
|
25
|
-
This should work without you noticing if your adapter inherits from `Faraday::Adapter` and calls `save_response`, but if it doesn't, then please ensure you set the `status` BEFORE the `body` while processing the response.
|
26
|
-
|
27
|
-
### Others
|
28
|
-
* Dropped support for jruby and Rubinius.
|
29
|
-
* Officially supports Ruby 2.4+
|
30
|
-
* In order to specify the adapter you now MUST use the `#adapter` method on the connection builder. If you don't do so and your adapter inherits from `Faraday::Adapter` then Faraday will raise an exception. Otherwise, Faraday will automatically push the default adapter at the end of the stack causing your request to be executed twice.
|
31
|
-
```ruby
|
32
|
-
class OfficialAdapter < Faraday::Adapter
|
33
|
-
...
|
34
|
-
end
|
35
|
-
|
36
|
-
class MyAdapter
|
37
|
-
...
|
38
|
-
end
|
39
|
-
|
40
|
-
# This will raise an exception
|
41
|
-
conn = Faraday.new(...) do |f|
|
42
|
-
f.use OfficialAdapter
|
43
|
-
end
|
44
|
-
|
45
|
-
# This will cause Faraday inserting the default adapter at the end of the stack
|
46
|
-
conn = Faraday.new(...) do |f|
|
47
|
-
f.use MyAdapter
|
48
|
-
end
|
49
|
-
|
50
|
-
# You MUST use `adapter` method
|
51
|
-
conn = Faraday.new(...) do |f|
|
52
|
-
f.adapter AnyAdapter
|
53
|
-
end
|
54
|
-
```
|
55
|
-
|