mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-05 00:02:38 -04:00
67 lines
2.5 KiB
Markdown
67 lines
2.5 KiB
Markdown
# 0.10.0
|
|
|
|
## Features
|
|
|
|
### Streaming Requests
|
|
|
|
The `stream` plugin adds functionality to handle long-lived stream responses, such as the Twitter Streaming API:
|
|
|
|
```ruby
|
|
http = HTTPX.plugin(:stream)
|
|
|
|
http.get(stream_api_endpoint, stream: true).each_line do |line|
|
|
payload = JSON.parse(line)
|
|
# do smth with this
|
|
end
|
|
```
|
|
|
|
https://gitlab.com/honeyryderchuck/httpx/-/wikis/Stream
|
|
|
|
### Rate Limiter
|
|
|
|
The `rate_limiter` plugin adds functionality for automatically hooking into rate-limiting responses coming from the server, and waits-and-retries them according to what the server advertises.
|
|
|
|
```ruby
|
|
HTTPX.plugin(:rate_limiter).get(rate_limited_api_endpoint)
|
|
# => 429 Too Many Requests .... Retry-After: 3
|
|
# waits 3 seconds before retrying
|
|
```
|
|
|
|
https://gitlab.com/honeyryderchuck/httpx/-/wikis/Rate-Limiter
|
|
|
|
### Ruby 3
|
|
|
|
This release is the first testing against and targeting Ruby 3 and some of the new features.
|
|
|
|
It ships with RBS signatures for all of the client-facing APIs. There's non 100% typinng coverage yet, but I'm gradually (pun intended) working on it.
|
|
|
|
|
|
## Improvements
|
|
|
|
### IDN support
|
|
|
|
Requests where the domains are formed by non-ASCII characters, are now supported (if you're using ruby 2.3 or more recent).
|
|
|
|
```ruby
|
|
HTTPX.get("http://bücher.ch") # it works!
|
|
```
|
|
|
|
### cookies plugin full implementation
|
|
|
|
|
|
The `cookies` plugin is now independent of 3rd-party gems. The motivation for this was that `http-cookie` was dependent of both `domain_name` and `unf` gems, which are currently unusable in ruby 3, and haven't received any update in the last 3 years.
|
|
|
|
The implementation is still compliant with RFC6265, and all of the features provided in earlier versions were ported, exceptwhen loading the cookie jar stored in a Netscape-format file or Mozilla sqlite database, which were not documented for `httpx` anyway, and I considered too niche to backport. If you feel `httpx` should support those, do let me know.
|
|
|
|
Some code from these gems, including the ruby punycode implementation, is now part of the source tree, along with its licenses and attribution mentions.
|
|
|
|
## Bugfixes
|
|
|
|
|
|
Several edge-case bugs have been fixed solely by the integration of RBS runtime type checking, including some bugs around closing a connection pool that can cause loops.
|
|
|
|
|
|
## Regressions
|
|
|
|
`HTTPX::ErrorResponse`'s methods `#headers` and `#reason` were removed, as they didn't provide much value. Consider calling `#raise_for_status` or checking the API (`is_a?(HTTPX::ErrorResponse)` or `respond_to?(:error)` are strategies for this).
|