
httpx 1.3.0 has been released. ``` HTTPX.get("https://gitlab.com/honeyryderchuck/httpx <https://gitlab.com/honeyryderchuck/httpx>") ``` HTTPX is an HTTP client library for the Ruby programming language. Among its features, it supports: * HTTP/2 and HTTP/1.x protocol versions * Concurrent requests by default * Simple and chainable API * Proxy Support (HTTP(S), CONNECT tunnel, Socks4/4a/5) * Simple Timeout System * Lightweight by default (require what you need) And also: * Compression (gzip, deflate, brotli) * Streaming Requests * Authentication (Basic Auth, Digest Auth, AWS Sigv4) * Expect 100-continue * Multipart Requests * Cookies * HTTP/2 Server Push * H2C Upgrade * Automatic follow redirects * International Domain Names * GRPC * Circuit breaker * WebDAV * SSRF Filter * Datadog integration * Faraday integration * Webmock integration * Sentry integration Here are the updates since the last release: # 1.3.0 ## Dependencies `http-2` v1.0.0 is replacing `http-2-next` as the HTTP/2 parser. `http-2-next` was forked from `http-2` 5 years ago; its improvements have been merged back to `http-2` recently though, so `http-2-next` willl therefore no longer be maintained. ## Improvements Request-specific options (`:params`, `:form`, `:json` and `:xml`) are now separately kept by the request, which allows them to share `HTTPX::Options`, and reduce the number of copying / allocations. This means that `HTTPX::Options` will throw an error if you initialize an object which such keys; this should not happen, as this class is considered internal and you should not be using it directly. ## Fixes * support for the `datadog` gem v2.0.0 in its adapter has been unblocked, now that the gem has been released. * loading the `:cookies` plugin was making the `Session#build_request` private. # 1.2.6 ## Improvements * `native` resolver: when timing out on DNS query for an alias, retry the DNS query for the alias (instead of the original hostname). ## Bugfixes * `faraday` adapter: set `env` options on the request object, so they are available in the request object when yielded. * `follow_redirects` plugin: remove body-related headers (`content-length`, `content-type`) on POST-to-GET redirects. * `follow_redirects` plugin: maintain verb (and body) of original request when the response status code is 307. * `native` resolver: when timing out on TCP-based name resolution, downgrade to UDP before retrying. * `rate_limiter` plugin: do not try fetching the retry-after of error responses. # 1.2.5 ## Bugfixes * fix for usage of correct `last-modified` header in `response_cache` plugin. * fix usage of decoding helper methods (i.e. `response.json`) with `response_cache` plugin. * `stream` plugin: reverted back to yielding buffered payloads for streamed responses (broke `down` integration) # 1.2.4 ## Bugfixes * fixed issue related to inability to buffer payload to error responses (which may happen on certain error handling situations). * fixed recovery from a lost persistent connection leaving process due to ping being sent while still marked as inactive. * fixed datadog integration, which was not generating new spans on retried requests (when `:retries` plugin is enabled). * fixed splitting strings into key value pairs in cases where the value would contain a "=", such as in certain base64 payloads. # 1.2.3 ## Improvements * `:retries` plugin: allow `:max_retries` set to 0 (allows for a soft disable of retries when using the faraday adapter). ## Bugfixes * `:oauth` plugin: fix for default auth method being ignored when setting grant type and scope as options only. * ensure happy eyeballs-initiated cloned connections also set session callbacks (caused issues when server would respond with a 421 response, an event requiring a valid internal callback). * native resolver cleanly transitions from tcp to udp after truncated DNS query (causing issues on follow-up CNAME resolution). * elapsing timeouts now guard against mutation of callbacks while looping (prevents skipping callbacks in situations where a previous one would remove itself from the collection). ## Chore * datadog adapter: do not call `.lazy` on options (avoids deprecation warning, to be removed in ddtrace 2.0) # 1.2.2 ## Bugfixes * only raise "unknown option" error when option is not supported, not anymore when error happens in the setup of a support option. * usage of `HTTPX::Session#wrap` within a thread with other sessions using the `:persistent` plugin won't inadvertedly terminate its open connections. * terminate connections on `IOError` (`SocketError` does not cover them). * terminate connections on HTTP/2 protocol and handshake errors, which happen during establishment or termination of a HTTP/2 connection (they were being previously kept around, although they'd irrecoverable). * `:oauth` plugin: fixing check preventing the OAuth metadata server integration path to be exercised. * fix instantiation of the options headers object with the wrong headers class. # 1.2.1 ## Bugfixes * DoH resolver: try resolving other candidates on "domain not found" error (same behaviour as with native resolver). * Allow HTTP/2 connections to exit cleanly when TLS session gets corrupted and termination handshake can't be performed.