faraday 1.0.1 → 1.4.2
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 +104 -0
- data/LICENSE.md +1 -1
- data/README.md +3 -5
- data/examples/client_spec.rb +1 -1
- data/lib/faraday.rb +55 -41
- data/lib/faraday/adapter.rb +1 -8
- data/lib/faraday/autoload.rb +1 -6
- data/lib/faraday/connection.rb +11 -4
- data/lib/faraday/encoders/flat_params_encoder.rb +9 -2
- data/lib/faraday/encoders/nested_params_encoder.rb +7 -2
- data/lib/faraday/error.rb +20 -0
- data/lib/faraday/methods.rb +6 -0
- data/lib/faraday/middleware.rb +14 -4
- data/lib/faraday/options.rb +4 -8
- data/lib/faraday/options/proxy_options.rb +4 -0
- data/lib/faraday/rack_builder.rb +13 -12
- data/lib/faraday/request.rb +20 -10
- data/lib/faraday/request/multipart.rb +9 -2
- data/lib/faraday/request/retry.rb +2 -2
- data/lib/faraday/response.rb +0 -6
- data/lib/faraday/response/raise_error.rb +12 -1
- data/lib/faraday/utils.rb +2 -2
- data/lib/faraday/utils/headers.rb +2 -2
- data/lib/faraday/version.rb +5 -0
- data/spec/faraday/adapter/test_spec.rb +260 -0
- data/spec/faraday/connection_spec.rb +38 -0
- data/spec/faraday/error_spec.rb +15 -0
- data/spec/faraday/middleware_spec.rb +32 -6
- data/spec/faraday/options/proxy_options_spec.rb +7 -0
- data/spec/faraday/params_encoders/flat_spec.rb +8 -0
- data/spec/faraday/params_encoders/nested_spec.rb +8 -0
- data/spec/faraday/rack_builder_spec.rb +149 -0
- data/spec/faraday/request/authorization_spec.rb +2 -2
- data/spec/faraday/request/multipart_spec.rb +41 -13
- data/spec/faraday/request/retry_spec.rb +1 -1
- data/spec/faraday/request_spec.rb +16 -5
- data/spec/faraday/response/raise_error_spec.rb +63 -0
- data/spec/support/shared_examples/adapter.rb +2 -1
- data/spec/support/shared_examples/request_method.rb +39 -11
- metadata +92 -13
- data/lib/faraday/adapter/em_http.rb +0 -286
- data/lib/faraday/adapter/em_http_ssl_patch.rb +0 -62
- data/lib/faraday/adapter/em_synchrony.rb +0 -150
- data/lib/faraday/adapter/em_synchrony/parallel_manager.rb +0 -69
- data/lib/faraday/adapter/excon.rb +0 -124
- data/lib/faraday/adapter/net_http.rb +0 -219
- data/lib/faraday/adapter/net_http_persistent.rb +0 -91
- data/spec/faraday/adapter/net_http_persistent_spec.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b0077d079fbfe478a57bbc4f804b9e8761addcad6266587434f99534d9ca935
|
4
|
+
data.tar.gz: 465fc3bb1ad67259f4e6515ff3ea006c833d4dca43946cb79da683311eccf4e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63deab2286691410961536ed63f36a5d23917227327e2ccfbc919621ba86dae8e397e8fbe3b29826a309e988a8924a8943583ac42b515aa07dd6dccacdc323a2
|
7
|
+
data.tar.gz: 5827629437871707807bcfc405f02bc6a9a19fc99cc655bb44de37fbc4aaa5c277dd29895153cb506e0718d841229c6086ef00314c262ebda7e2ac68b5f90ce6
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,109 @@
|
|
1
1
|
# Faraday Changelog
|
2
2
|
|
3
|
+
## [v1.3.0](https://github.com/lostisland/faraday/releases/tag/v1.3.0) (2020-12-31)
|
4
|
+
|
5
|
+
### Highlights
|
6
|
+
Faraday v1.3.0 is the first release to officially support Ruby 3.0 in the CI pipeline 🎉 🍾!
|
7
|
+
|
8
|
+
This is also the first release with a previously "included" adapter (Net::HTTP) being isolated into a [separate gem](https://github.com/lostisland/faraday-net_http) 🎊!
|
9
|
+
The new adapter is added to Faraday as a dependency for now, so that means full backwards-compatibility, but just to be safe be careful when upgrading!
|
10
|
+
|
11
|
+
This is a huge step towards are Faraday v2.0 objective of pushing adapters and middleware into separate gems.
|
12
|
+
Many thanks to the Faraday Team, @JanDintel and everyone who attended the [ROSS Conf remote event](https://www.rossconf.io/event/remote/)
|
13
|
+
|
14
|
+
### Features
|
15
|
+
|
16
|
+
* Improves consistency with Faraday::Error and Faraday::RaiseError (#1229, @qsona, @iMacTia)
|
17
|
+
|
18
|
+
### Fixes
|
19
|
+
|
20
|
+
* Don't assign to global ::Timer (#1227, @bpo)
|
21
|
+
|
22
|
+
### Documentation
|
23
|
+
|
24
|
+
* CHANGELOG: add releases after 1.0 (#1225, @olleolleolle)
|
25
|
+
* Improves retry middleware documentation. (#1228, @iMacTia)
|
26
|
+
|
27
|
+
### Misc
|
28
|
+
|
29
|
+
* Move out Net::HTTP adapter (#1222, @JanDintel, @iMacTia)
|
30
|
+
* Adds Ruby 3.0 to CI Matrix (#1226, @iMacTia)
|
31
|
+
|
32
|
+
|
33
|
+
## [v1.2.0](https://github.com/lostisland/faraday/releases/tag/v1.2.0) (2020-12-23)
|
34
|
+
|
35
|
+
### Features
|
36
|
+
|
37
|
+
* Introduces `on_request` and `on_complete` methods in `Faraday::Middleware`. (#1194, @iMacTia)
|
38
|
+
|
39
|
+
### Fixes
|
40
|
+
|
41
|
+
* Require 'date' to avoid retry exception (#1206, @rustygeldmacher)
|
42
|
+
* Fix rdebug recursion issue (#1205, @native-api)
|
43
|
+
* Update call to `em_http_ssl_patch` (#1202, @kylekeesling)
|
44
|
+
* `EmHttp` adapter: drop superfluous loaded? check (#1213, @olleolleolle)
|
45
|
+
* Avoid 1 use of keyword hackery (#1211, @grosser)
|
46
|
+
* Fix #1219 `Net::HTTP` still uses env proxy (#1221, @iMacTia)
|
47
|
+
|
48
|
+
### Documentation
|
49
|
+
|
50
|
+
* Add comment in gemspec to explain exposure of `examples` and `spec` folders. (#1192, @iMacTia)
|
51
|
+
* Adapters, how to create them (#1193, @olleolleolle)
|
52
|
+
* Update documentation on using the logger (#1196, @tijmenb)
|
53
|
+
* Adjust the retry documentation and spec to align with implementation (#1198, @nbeyer)
|
54
|
+
|
55
|
+
### Misc
|
56
|
+
|
57
|
+
* Test against ruby head (#1208, @grosser)
|
58
|
+
|
59
|
+
## [v1.1.0](https://github.com/lostisland/faraday/releases/tag/v1.1.0) (2020-10-17)
|
60
|
+
|
61
|
+
### Features
|
62
|
+
|
63
|
+
* Makes parameters sorting configurable (#1162 @wishdev)
|
64
|
+
* Introduces `flat_encode` option for multipart adapter. (#1163 @iMacTia)
|
65
|
+
* Include request info in exceptions raised by RaiseError Middleware (#1181 @SandroDamilano)
|
66
|
+
|
67
|
+
### Fixes
|
68
|
+
|
69
|
+
* Avoid `last arg as keyword param` warning when building user middleware on Ruby 2.7 (#1153 @dgholz)
|
70
|
+
* Limits net-http-persistent version to < 4.0 (#1156 @iMacTia)
|
71
|
+
* Update `typhoeus` to new stable version (`1.4`) (#1159 @AlexWayfer)
|
72
|
+
* Properly fix test failure with Rack 2.1+. (#1171 @voxik)
|
73
|
+
|
74
|
+
### Documentation
|
75
|
+
|
76
|
+
* Improves documentation on how to contribute to the site by using Docker. (#1175 @iMacTia)
|
77
|
+
* Remove retry_change_requests from documentation (#1185 @stim371)
|
78
|
+
|
79
|
+
### Misc
|
80
|
+
|
81
|
+
* Link from GitHub Actions badge to CI workflow (#1141 @olleolleolle)
|
82
|
+
* Return tests of `Test` adapter (#1147 @AlexWayfer)
|
83
|
+
* Add 1.0 release to wording in CONTRIBUTING (#1155 @olleolleolle)
|
84
|
+
* Fix linting bumping Rubocop to 0.90.0 (#1182 @iMacTia)
|
85
|
+
* Drop `git ls-files` in gemspec (#1183 @utkarsh2102)
|
86
|
+
* Upgrade CI to ruby/setup-ruby (#1187 @gogainda)
|
87
|
+
|
88
|
+
## [v1.0.1](https://github.com/lostisland/faraday/releases/tag/v1.0.1) (2020-03-29)
|
89
|
+
|
90
|
+
### Fixes
|
91
|
+
|
92
|
+
* Use Net::HTTP#start(&block) to ensure closed TCP connections (#1117)
|
93
|
+
* Fully qualify constants to be checked (#1122)
|
94
|
+
* Allows `parse` method to be private/protected in response middleware (#1123)
|
95
|
+
* Encode Spaces in Query Strings as '%20' Instead of '+' (#1125)
|
96
|
+
* Limits rack to v2.0.x (#1127)
|
97
|
+
* Adapter Registry reads also use mutex (#1136)
|
98
|
+
|
99
|
+
### Documentation
|
100
|
+
|
101
|
+
* Retry middleware documentation fix (#1109)
|
102
|
+
* Docs(retry): precise usage of retry-after (#1111)
|
103
|
+
* README: Link the logo to the website (#1112)
|
104
|
+
* Website: add search bar (#1116)
|
105
|
+
* Fix request/response mix-up in docs text (#1132)
|
106
|
+
|
3
107
|
## v1.0
|
4
108
|
|
5
109
|
Features:
|
data/LICENSE.md
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# [][website]
|
2
2
|
|
3
3
|
[](https://rubygems.org/gems/faraday)
|
4
|
-

|
5
|
-
[](https://codeclimate.com/github/lostisland/faraday/test_coverage)
|
6
|
-
[](https://codeclimate.com/github/lostisland/faraday/maintainability)
|
4
|
+
[](https://github.com/lostisland/faraday/actions?query=workflow%3ACI)
|
7
5
|
[](https://gitter.im/lostisland/faraday?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
8
6
|
|
9
7
|
|
@@ -43,12 +41,12 @@ Open the issues page and check for the `help wanted` label!
|
|
43
41
|
But before you start coding, please read our [Contributing Guide][contributing]
|
44
42
|
|
45
43
|
## Copyright
|
46
|
-
© 2009 -
|
44
|
+
© 2009 - 2020, the [Faraday Team][faraday_team]. Website and branding design by [Elena Lo Piccolo](https://elelopic.design).
|
47
45
|
|
48
46
|
[website]: https://lostisland.github.io/faraday
|
49
47
|
[faraday_team]: https://lostisland.github.io/faraday/team
|
50
48
|
[contributing]: https://github.com/lostisland/faraday/blob/master/.github/CONTRIBUTING.md
|
51
|
-
[apidoc]:
|
49
|
+
[apidoc]: https://www.rubydoc.info/github/lostisland/faraday
|
52
50
|
[actions]: https://github.com/lostisland/faraday/actions
|
53
51
|
[jruby]: http://jruby.org/
|
54
52
|
[rubinius]: http://rubini.us/
|
data/examples/client_spec.rb
CHANGED
data/lib/faraday.rb
CHANGED
@@ -1,11 +1,38 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'cgi'
|
4
|
+
require 'date'
|
4
5
|
require 'set'
|
5
6
|
require 'forwardable'
|
6
7
|
require 'faraday/middleware_registry'
|
7
8
|
require 'faraday/dependency_loader'
|
8
9
|
|
10
|
+
unless defined?(::Faraday::Timer)
|
11
|
+
require 'timeout'
|
12
|
+
::Faraday::Timer = Timeout
|
13
|
+
end
|
14
|
+
|
15
|
+
require 'faraday/version'
|
16
|
+
require 'faraday/methods'
|
17
|
+
require 'faraday/utils'
|
18
|
+
require 'faraday/options'
|
19
|
+
require 'faraday/connection'
|
20
|
+
require 'faraday/rack_builder'
|
21
|
+
require 'faraday/parameters'
|
22
|
+
require 'faraday/middleware'
|
23
|
+
require 'faraday/adapter'
|
24
|
+
require 'faraday/request'
|
25
|
+
require 'faraday/response'
|
26
|
+
require 'faraday/error'
|
27
|
+
require 'faraday/file_part'
|
28
|
+
require 'faraday/param_part'
|
29
|
+
|
30
|
+
require 'faraday/em_http'
|
31
|
+
require 'faraday/em_synchrony'
|
32
|
+
require 'faraday/excon'
|
33
|
+
require 'faraday/net_http'
|
34
|
+
require 'faraday/net_http_persistent'
|
35
|
+
|
9
36
|
# This is the main namespace for Faraday.
|
10
37
|
#
|
11
38
|
# It provides methods to create {Connection} objects, and HTTP-related
|
@@ -19,10 +46,6 @@ require 'faraday/dependency_loader'
|
|
19
46
|
# conn.get '/'
|
20
47
|
#
|
21
48
|
module Faraday
|
22
|
-
VERSION = '1.0.1'
|
23
|
-
METHODS_WITH_QUERY = %w[get head delete trace].freeze
|
24
|
-
METHODS_WITH_BODY = %w[post put patch].freeze
|
25
|
-
|
26
49
|
class << self
|
27
50
|
# The root path that Faraday is being loaded from.
|
28
51
|
#
|
@@ -107,6 +130,34 @@ module Faraday
|
|
107
130
|
default_connection.respond_to?(symbol, include_private) || super
|
108
131
|
end
|
109
132
|
|
133
|
+
# @overload default_connection
|
134
|
+
# Gets the default connection used for simple scripts.
|
135
|
+
# @return [Faraday::Connection] a connection configured with
|
136
|
+
# the default_adapter.
|
137
|
+
# @overload default_connection=(connection)
|
138
|
+
# @param connection [Faraday::Connection]
|
139
|
+
# Sets the default {Faraday::Connection} for simple scripts that
|
140
|
+
# access the Faraday constant directly, such as
|
141
|
+
# <code>Faraday.get "https://faraday.com"</code>.
|
142
|
+
def default_connection
|
143
|
+
@default_connection ||= Connection.new(default_connection_options)
|
144
|
+
end
|
145
|
+
|
146
|
+
# Gets the default connection options used when calling {Faraday#new}.
|
147
|
+
#
|
148
|
+
# @return [Faraday::ConnectionOptions]
|
149
|
+
def default_connection_options
|
150
|
+
@default_connection_options ||= ConnectionOptions.new
|
151
|
+
end
|
152
|
+
|
153
|
+
# Sets the default options used when calling {Faraday#new}.
|
154
|
+
#
|
155
|
+
# @param options [Hash, Faraday::ConnectionOptions]
|
156
|
+
def default_connection_options=(options)
|
157
|
+
@default_connection = nil
|
158
|
+
@default_connection_options = ConnectionOptions.from(options)
|
159
|
+
end
|
160
|
+
|
110
161
|
private
|
111
162
|
|
112
163
|
# Internal: Proxies method calls on the Faraday constant to
|
@@ -125,42 +176,5 @@ module Faraday
|
|
125
176
|
self.lib_path = File.expand_path 'faraday', __dir__
|
126
177
|
self.default_adapter = :net_http
|
127
178
|
|
128
|
-
# @overload default_connection
|
129
|
-
# Gets the default connection used for simple scripts.
|
130
|
-
# @return [Faraday::Connection] a connection configured with
|
131
|
-
# the default_adapter.
|
132
|
-
# @overload default_connection=(connection)
|
133
|
-
# @param connection [Faraday::Connection]
|
134
|
-
# Sets the default {Faraday::Connection} for simple scripts that
|
135
|
-
# access the Faraday constant directly, such as
|
136
|
-
# <code>Faraday.get "https://faraday.com"</code>.
|
137
|
-
def self.default_connection
|
138
|
-
@default_connection ||= Connection.new(default_connection_options)
|
139
|
-
end
|
140
|
-
|
141
|
-
# Gets the default connection options used when calling {Faraday#new}.
|
142
|
-
#
|
143
|
-
# @return [Faraday::ConnectionOptions]
|
144
|
-
def self.default_connection_options
|
145
|
-
@default_connection_options ||= ConnectionOptions.new
|
146
|
-
end
|
147
|
-
|
148
|
-
# Sets the default options used when calling {Faraday#new}.
|
149
|
-
#
|
150
|
-
# @param options [Hash, Faraday::ConnectionOptions]
|
151
|
-
def self.default_connection_options=(options)
|
152
|
-
@default_connection = nil
|
153
|
-
@default_connection_options = ConnectionOptions.from(options)
|
154
|
-
end
|
155
|
-
|
156
|
-
unless defined?(::Faraday::Timer)
|
157
|
-
require 'timeout'
|
158
|
-
Timer = Timeout
|
159
|
-
end
|
160
|
-
|
161
|
-
require_libs 'utils', 'options', 'connection', 'rack_builder', 'parameters',
|
162
|
-
'middleware', 'adapter', 'request', 'response', 'error',
|
163
|
-
'file_part', 'param_part'
|
164
|
-
|
165
179
|
require_lib 'autoload' unless ENV['FARADAY_NO_AUTOLOAD']
|
166
180
|
end
|
data/lib/faraday/adapter.rb
CHANGED
@@ -11,22 +11,15 @@ module Faraday
|
|
11
11
|
|
12
12
|
register_middleware File.expand_path('adapter', __dir__),
|
13
13
|
test: [:Test, 'test'],
|
14
|
-
net_http: [:NetHttp, 'net_http'],
|
15
|
-
net_http_persistent: [
|
16
|
-
:NetHttpPersistent,
|
17
|
-
'net_http_persistent'
|
18
|
-
],
|
19
14
|
typhoeus: [:Typhoeus, 'typhoeus'],
|
20
15
|
patron: [:Patron, 'patron'],
|
21
|
-
em_synchrony: [:EMSynchrony, 'em_synchrony'],
|
22
|
-
em_http: [:EMHttp, 'em_http'],
|
23
|
-
excon: [:Excon, 'excon'],
|
24
16
|
rack: [:Rack, 'rack'],
|
25
17
|
httpclient: [:HTTPClient, 'httpclient']
|
26
18
|
|
27
19
|
# This module marks an Adapter as supporting parallel requests.
|
28
20
|
module Parallelism
|
29
21
|
attr_writer :supports_parallel
|
22
|
+
|
30
23
|
def supports_parallel?
|
31
24
|
@supports_parallel
|
32
25
|
end
|
data/lib/faraday/autoload.rb
CHANGED
@@ -23,7 +23,7 @@ module Faraday
|
|
23
23
|
#
|
24
24
|
# @return [void]
|
25
25
|
def autoload_all(prefix, options)
|
26
|
-
if prefix
|
26
|
+
if prefix.match? %r{^faraday(/|$)}i
|
27
27
|
prefix = File.join(Faraday.root_path, prefix)
|
28
28
|
end
|
29
29
|
|
@@ -58,13 +58,8 @@ module Faraday
|
|
58
58
|
class Adapter
|
59
59
|
extend AutoloadHelper
|
60
60
|
autoload_all 'faraday/adapter',
|
61
|
-
NetHttp: 'net_http',
|
62
|
-
NetHttpPersistent: 'net_http_persistent',
|
63
|
-
EMSynchrony: 'em_synchrony',
|
64
|
-
EMHttp: 'em_http',
|
65
61
|
Typhoeus: 'typhoeus',
|
66
62
|
Patron: 'patron',
|
67
|
-
Excon: 'excon',
|
68
63
|
Test: 'test',
|
69
64
|
Rack: 'rack',
|
70
65
|
HTTPClient: 'httpclient'
|
data/lib/faraday/connection.rb
CHANGED
@@ -419,6 +419,8 @@ module Faraday
|
|
419
419
|
basic_auth user, password
|
420
420
|
uri.user = uri.password = nil
|
421
421
|
end
|
422
|
+
|
423
|
+
@proxy = proxy_from_env(url) unless @manual_proxy
|
422
424
|
end
|
423
425
|
|
424
426
|
# Sets the path prefix and ensures that it always has a leading
|
@@ -429,7 +431,7 @@ module Faraday
|
|
429
431
|
# @return [String] the new path prefix
|
430
432
|
def path_prefix=(value)
|
431
433
|
url_prefix.path = if value
|
432
|
-
value =
|
434
|
+
value = "/#{value}" unless value[0, 1] == '/'
|
433
435
|
value
|
434
436
|
end
|
435
437
|
end
|
@@ -520,8 +522,9 @@ module Faraday
|
|
520
522
|
base = url_prefix
|
521
523
|
if url && base.path && base.path !~ %r{/$}
|
522
524
|
base = base.dup
|
523
|
-
base.path = base.path
|
525
|
+
base.path = "#{base.path}/" # ensure trailing slash
|
524
526
|
end
|
527
|
+
url = url && URI.parse(url.to_s).opaque ? url.to_s.gsub(':', '%3A') : url
|
525
528
|
uri = url ? base + url : base
|
526
529
|
if params
|
527
530
|
uri.query = params.to_query(params_encoder || options.params_encoder)
|
@@ -576,7 +579,11 @@ module Faraday
|
|
576
579
|
case url
|
577
580
|
when String
|
578
581
|
uri = Utils.URI(url)
|
579
|
-
uri =
|
582
|
+
uri = if uri.host.nil?
|
583
|
+
find_default_proxy
|
584
|
+
else
|
585
|
+
URI.parse("#{uri.scheme}://#{uri.host}").find_proxy
|
586
|
+
end
|
580
587
|
when URI
|
581
588
|
uri = url.find_proxy
|
582
589
|
when nil
|
@@ -593,7 +600,7 @@ module Faraday
|
|
593
600
|
uri = ENV['http_proxy']
|
594
601
|
return unless uri && !uri.empty?
|
595
602
|
|
596
|
-
uri =
|
603
|
+
uri = "http://#{uri}" unless uri.match?(/^http/i)
|
597
604
|
uri
|
598
605
|
end
|
599
606
|
|
@@ -33,9 +33,9 @@ module Faraday
|
|
33
33
|
key = key.to_s if key.is_a?(Symbol)
|
34
34
|
[key, value]
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
# Only to be used for non-Array inputs. Arrays should preserve order.
|
38
|
-
params.sort!
|
38
|
+
params.sort! if @sort_params
|
39
39
|
end
|
40
40
|
|
41
41
|
# The params have form [['key1', 'value1'], ['key2', 'value2']].
|
@@ -94,5 +94,12 @@ module Faraday
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
97
|
+
|
98
|
+
class << self
|
99
|
+
attr_accessor :sort_params
|
100
|
+
end
|
101
|
+
|
102
|
+
# Useful default for OAuth and caching.
|
103
|
+
@sort_params = true
|
97
104
|
end
|
98
105
|
end
|
@@ -21,9 +21,9 @@ module Faraday
|
|
21
21
|
key = key.to_s if key.is_a?(Symbol)
|
22
22
|
[key, value]
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
# Only to be used for non-Array inputs. Arrays should preserve order.
|
26
|
-
params.sort!
|
26
|
+
params.sort! if @sort_params
|
27
27
|
end
|
28
28
|
|
29
29
|
# The params have form [['key1', 'value1'], ['key2', 'value2']].
|
@@ -161,10 +161,15 @@ module Faraday
|
|
161
161
|
# for your requests.
|
162
162
|
module NestedParamsEncoder
|
163
163
|
class << self
|
164
|
+
attr_accessor :sort_params
|
165
|
+
|
164
166
|
extend Forwardable
|
165
167
|
def_delegators :'Faraday::Utils', :escape, :unescape
|
166
168
|
end
|
167
169
|
|
170
|
+
# Useful default for OAuth and caching.
|
171
|
+
@sort_params = true
|
172
|
+
|
168
173
|
extend EncodeMethods
|
169
174
|
extend DecodeMethods
|
170
175
|
end
|
data/lib/faraday/error.rb
CHANGED
@@ -28,6 +28,18 @@ module Faraday
|
|
28
28
|
%(#<#{self.class}#{inner}>)
|
29
29
|
end
|
30
30
|
|
31
|
+
def response_status
|
32
|
+
@response[:status] if @response
|
33
|
+
end
|
34
|
+
|
35
|
+
def response_headers
|
36
|
+
@response[:headers] if @response
|
37
|
+
end
|
38
|
+
|
39
|
+
def response_body
|
40
|
+
@response[:body] if @response
|
41
|
+
end
|
42
|
+
|
31
43
|
protected
|
32
44
|
|
33
45
|
# Pulls out potential parent exception and response hash, storing them in
|
@@ -38,6 +50,14 @@ module Faraday
|
|
38
50
|
# :headers - String key/value hash of HTTP response header
|
39
51
|
# values.
|
40
52
|
# :body - Optional string HTTP response body.
|
53
|
+
# :request - Hash
|
54
|
+
# :method - Symbol with the request HTTP method.
|
55
|
+
# :url_path - String with the url path requested.
|
56
|
+
# :params - String key/value hash of query params
|
57
|
+
# present in the request.
|
58
|
+
# :headers - String key/value hash of HTTP request
|
59
|
+
# header values.
|
60
|
+
# :body - String HTTP request body.
|
41
61
|
#
|
42
62
|
# If a subclass has to call this, then it should pass a string message
|
43
63
|
# to `super`. See NilStatusError.
|