v1.3.0 (2020-12-31)
Faraday v1.3.0 is the first release to officially support Ruby 3.0 in the CI pipeline 🎉 🍾!
This is also the first release with a previously "included" adapter (Net::HTTP) being isolated into a separate gem 🎊! 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!
This is a huge step towards are Faraday v2.0 objective of pushing adapters and middleware into separate gems. Many thanks to the Faraday Team, @JanDintel and everyone who attended the ROSS Conf remote event
- Improves consistency with Faraday::Error and Faraday::RaiseError (#1229, @qsona, @iMacTia)
- Don't assign to global ::Timer (#1227, @bpo)
- CHANGELOG: add releases after 1.0 (#1225, @olleolleolle)
- Improves retry middleware documentation. (#1228, @iMacTia)
- Move out Net::HTTP adapter (#1222, @JanDintel, @iMacTia)
- Adds Ruby 3.0 to CI Matrix (#1226, @iMacTia)
v1.2.0 (2020-12-23)
- Introduces
on_request
andon_complete
methods inFaraday::Middleware
. (#1194, @iMacTia)
- Require 'date' to avoid retry exception (#1206, @rustygeldmacher)
- Fix rdebug recursion issue (#1205, @native-api)
- Update call to
em_http_ssl_patch
(#1202, @kylekeesling) EmHttp
adapter: drop superfluous loaded? check (#1213, @olleolleolle)- Avoid 1 use of keyword hackery (#1211, @grosser)
- Fix #1219
Net::HTTP
still uses env proxy (#1221, @iMacTia)
- Add comment in gemspec to explain exposure of
examples
andspec
folders. (#1192, @iMacTia) - Adapters, how to create them (#1193, @olleolleolle)
- Update documentation on using the logger (#1196, @tijmenb)
- Adjust the retry documentation and spec to align with implementation (#1198, @nbeyer)
- Test against ruby head (#1208, @grosser)
v1.1.0 (2020-10-17)
- Makes parameters sorting configurable (#1162 @wishdev)
- Introduces
flat_encode
option for multipart adapter. (#1163 @iMacTia) - Include request info in exceptions raised by RaiseError Middleware (#1181 @SandroDamilano)
- Avoid
last arg as keyword param
warning when building user middleware on Ruby 2.7 (#1153 @dgholz) - Limits net-http-persistent version to < 4.0 (#1156 @iMacTia)
- Update
typhoeus
to new stable version (1.4
) (#1159 @AlexWayfer) - Properly fix test failure with Rack 2.1+. (#1171 @voxik)
- Improves documentation on how to contribute to the site by using Docker. (#1175 @iMacTia)
- Remove retry_change_requests from documentation (#1185 @stim371)
- Link from GitHub Actions badge to CI workflow (#1141 @olleolleolle)
- Return tests of
Test
adapter (#1147 @AlexWayfer) - Add 1.0 release to wording in CONTRIBUTING (#1155 @olleolleolle)
- Fix linting bumping Rubocop to 0.90.0 (#1182 @iMacTia)
- Drop
git ls-files
in gemspec (#1183 @utkarsh2102) - Upgrade CI to ruby/setup-ruby (#1187 @gogainda)
v1.0.1 (2020-03-29)
- Use Net::HTTP#start(&block) to ensure closed TCP connections (#1117)
- Fully qualify constants to be checked (#1122)
- Allows
parse
method to be private/protected in response middleware (#1123) - Encode Spaces in Query Strings as '%20' Instead of '+' (#1125)
- Limits rack to v2.0.x (#1127)
- Adapter Registry reads also use mutex (#1136)
- Retry middleware documentation fix (#1109)
- Docs(retry): precise usage of retry-after (#1111)
- README: Link the logo to the website (#1112)
- Website: add search bar (#1116)
- Fix request/response mix-up in docs text (#1132)
Features:
- Add #trace support to Faraday::Connection #861 (@technoweenie)
- Add the log formatter that is easy to override and safe to inherit #889 (@prikha)
- Support standalone adapters #941 (@iMacTia)
- Introduce Faraday::ConflictError for 409 response code #979 (@lucasmoreno)
- Add support for setting
read_timeout
option separately #1003 (@springerigor) - Refactor and cleanup timeout settings across adapters #1022 (@technoweenie)
- Create ParamPart class to allow multipart posts with JSON content and file upload at the same time #1017 (@jeremy-israel)
- Copy UploadIO const -> FilePart for consistency with ParamPart #1018, #1021 (@technoweenie)
- Implement streaming responses in the Excon adapter #1026 (@technoweenie)
- Add default implementation of
Middleware#close
. #1069 (@ioquatix) - Add
Adapter#close
so that derived classes can call super. #1091 (@ioquatix) - Add log_level option to logger default formatter #1079 (@amrrbakry)
- Fix empty array for FlatParamsEncoder
{key: []} -> "key="
#1084 (@mrexox)
Bugs:
- Explicitly require date for DateTime library in Retry middleware #844 (@nickpresta)
- Refactor Adapter as final endpoints #846 (@iMacTia)
- Separate Request and Response bodies in Faraday::Env #847 (@iMacTia)
- Implement Faraday::Connection#options to make HTTP requests with the OPTIONS verb. #857 (@technoweenie)
- Multipart: Drop Ruby 1.8 String behavior compat #892 (@olleolleolle)
- Fix Ruby warnings in Faraday::Options.memoized #962 (@technoweenie)
- Allow setting min/max SSL version for a Net::HTTP::Persistent connection #972, #973 (@bdewater, @olleolleolle)
- Fix instances of frozen empty string literals #1040 (@BobbyMcWho)
- remove temp_proxy and improve proxy tests #1063 (@technoweenie)
- improve error initializer consistency #1095 (@technoweenie)
Misc:
- Convert minitest suite to RSpec #832 (@iMacTia, with help from @gaynetdinov, @Insti, @technoweenie)
- Major effort to update code to RuboCop standards. #854 (@olleolleolle, @iMacTia, @technoweenie, @htwroclau, @jherdman, @Drenmi, @Insti)
- Rubocop #1044, #1047 (@BobbyMcWho, @olleolleolle)
- Documentation tweaks (@adsteel, @Hubro, @iMacTia, @olleolleolle, @technoweenie)
- Update license year #981 (@Kevin-Kawai)
- Configure Jekyll plugin jekyll-remote-theme to support Docker usage #999 (@Lewiscowles1986)
- Fix Ruby 2.7 warnings #1009 (@tenderlove)
- Cleanup adapter connections #1023 (@technoweenie)
- Describe clearing cached stubs #1045 (@viraptor)
- Add project metadata to the gemspec #1046 (@orien)
Fixes:
- Reverts changes in error classes hierarchy. #1092 (@iMacTia)
- Fix Ruby 1.9 syntax errors and improve Error class testing #1094 (@BanzaiMan, @mrexox, @technoweenie)
Misc:
- Stops using
&Proc.new
for block forwarding. #1083 (@olleolleolle) - Update CI to test against ruby 2.0-2.7 #1087, #1099 (@iMacTia, @olleolleolle, @technoweenie)
- require FARADAY_DEPRECATE=warn to show Faraday v1.0 deprecation warnings #1098 (@technoweenie)
Final release before Faraday v1.0, with important fixes for Ruby 2.7.
Fixes:
- RaiseError response middleware raises exception if HTTP client returns a nil status. #1042 (@jonnyom, @BobbyMcWho)
Misc:
- Fix Ruby 2.7 warnings (#1009)
- Add
Faraday::Deprecate
to warn about upcoming v1.0 changes. (#1054, #1059, #1076, #1077) - Add release notes up to current in CHANGELOG.md (#1066)
- Port minimal rspec suite from main branch to run backported tests. (#1058)
This release is the same as v0.15.4. It was pushed to cover up releases v0.16.0-v0.16.2.
- Expose
pool_size
as a option for the NetHttpPersistent adapter (#834)
- Make Faraday::Request serialisable with Marshal. (#803)
- Add DEFAULT_EXCEPTIONS constant to Request::Retry (#814)
- Add support for Ruby 2.6 Net::HTTP write_timeout (#824)
- Prevents
Net::HTTP
adapters to retry request internally by settingmax_retries
to 0 if available (Ruby 2.5+). (#799) - Fixes
NestedParamsEncoder
handling of empty array values (#801)
- NetHttpPersistent adapter better reuse of SSL connections (#793)
- Refactor: inline cached_connection (#797)
- Logger middleware: use $stdout instead of STDOUT (#794)
- Fix: do not memoize/reuse Patron session (#796)
Also in this release:
- Allow setting min/max ssl version for Net::HTTP (#792)
- Allow setting min/max ssl version for Excon (#795)
Features:
- Added retry block option to retry middleware. (#770)
- Retry middleware improvements (honour Retry-After header, retry statuses) (#773)
- Improve response logger middleware output (#784)
Fixes:
- Remove unused class error (#767)
- Fix minor typo in README (#760)
- Reuse persistent connections when using net-http-persistent (#778)
- Fix Retry middleware documentation (#781)
- Returns the http response when giving up on retrying by status (#783)
Features:
- Allow overriding env proxy #754 (@iMacTia)
- Remove legacy Typhoeus adapter #715 (@olleolleolle)
- External Typhoeus Adapter Compatibility #748 (@iMacTia)
- Warn about missing adapter when making a request #743 (@antstorm)
- Faraday::Adapter::Test stubs now support entire urls (with host) #741 (@erik-escobedo)
Fixes:
- If proxy is manually provided, this takes priority over
find_proxy
#724 (@iMacTia) - Fixes the behaviour for Excon's open_timeout (not setting write_timeout anymore) #731 (@apachelogger)
- Handle all connection timeout messages in Patron #687 (@stayhero)
- Fixes an incompatibility with Addressable::URI being used as uri_parser
Features:
- Dynamically reloads the proxy when performing a request on an absolute domain (#701)
- Adapter support for Net::HTTP::Persistent v3.0.0 (#619)
Fixes:
- Prefer #hostname over #host. (#714)
- Fixes an edge-case issue with response headers parsing (missing HTTP header) (#719)
- Parse headers from aggregated proxy requests/responses (#681)
- Guard against invalid middleware configuration with warning (#685)
- Do not use :insecure option by default in Patron (#691)
- Fixes an issue with HTTPClient not raising a
Faraday::ConnectionFailed
(#702) - Fixes YAML serialization/deserialization for
Faraday::Utils::Headers
(#690) - Fixes an issue with Options having a nil value (#694)
- Fixes an issue with Faraday.default_connection not using Faraday.default_connection_options (#698)
- Fixes an issue with Options.merge! and Faraday instrumentation middleware (#710)
- Fix an issue with Patron tests failing on jruby
- Fix an issue with new
rewind_files
feature that was causing an exception when the body was not an Hash - Expose wrapped_exception in all client errors
- Add Authentication Section to the ReadMe
- Hotfix release to address an issue with TravisCI deploy on Rubygems
Features:
- Proxy feature now relies on Ruby
URI::Generic#find_proxy
and can useno_proxy
ENV variable (not compatible with ruby < 2.0) - Adds support for
context
request option to pass arbitrary information to middlewares
Fixes:
- Fix an issue with options that was causing new options to override defaults ones unexpectedly
- Rewind
UploadIO
s on retry to fix a compatibility issue - Make multipart boundary unique
- Improvements in
README.md
Features:
- Add
filter
method to Logger middleware - Add support for Ruby2.4 and Minitest 6
- Introduce block syntax to customise the adapter
Fixes:
- Fix an issue that was allowing to override
default_connection_options
from a connection instance - Fix a bug that was causing newline escape characters ("\n") to be used when building the Authorization header
- Fix an issue with HTTPClient adapter that was causing the SSL to be reset on every request
- Rescue
IOError
instead of specific subclass Faraday::Utils::Headers
can now be successfully serialised in YAML- Handle
default_connection_options
set with hash
Breaking changes:
- Drop support for Ruby 1.8
Features:
- Include wrapped exception/reponse in ClientErrors
- Add
response.reason_phrase
- Provide option to selectively skip logging request/response headers
- Add regex support for pattern matching in
test
adapter
Fixes:
- Add
Faraday.respond_to?
to find methods managed bymethod_missing
- em-http:
request.host
instead ofconnection.host
should be taken for SSL validations - Allow
default_connection_options
to be merged when options are passed as url parameter - Improve splitting key-value pairs in raw HTTP headers
Adapters:
- Enable gzip compression for httpclient
- Fixes default certificate store for httpclient not having default paths.
- Make excon adapter compatible with 0.44 excon version
- Add compatibility with Patron 0.4.20
- Determine default port numbers in Net::HTTP adapters (Addressable compatibility)
- em-http: wrap "connection closed by server" as ConnectionFailed type
- Wrap Errno::ETIMEDOUT in Faraday::Error::TimeoutError
Utils:
- Add Rack-compatible support for parsing
a[][b]=c
nested queries - Encode nil values in queries different than empty strings. Before:
a=
; now:a
. - Have
Faraday::Utils::Headers#replace
clear internal key cache - Dup the internal key cache when a Headers hash is copied
Env and middleware:
- Ensure
env
stored on middleware response has reference to the response - Ensure that Response properties are initialized during
on_complete
(VCR compatibility) - Copy request options in Faraday::Connection#dup
- Env custom members should be copied by Env.from(env)
- Honour per-request
request.options.params_encoder
- Fix
interval_randomness
data type for Retry middleware - Add maximum interval option for Retry middleware
- Refactor Net:HTTP adapter so that with_net_http_connection can be overridden to allow pooled connections. (@Ben-M)
- Add configurable methods that bypass
retry_if
in the Retry request middleware. (@mike-bourgeous)
- Add HTTPClient adapter (@hakanensari)
- Improve Retry handler (@mislav)
- Remove autoloading by default (@technoweenie)
- Improve internal docs (@technoweenie, @mislav)
- Respect user/password in http proxy string (@mislav)
- Adapter options are structs. Reinforces consistent options across adapters (@technoweenie)
- Stop stripping trailing / off base URLs in a Faraday::Connection. (@technoweenie)
- Add a configurable URI parser. (@technoweenie)
- Remove need to manually autoload when using the authorization header helpers on
Faraday::Connection
. (@technoweenie) Faraday::Adapter::Test
respects theFaraday::RequestOptions#params_encoder
option. (@technoweenie)