5 unstable releases
0.8.0 | Aug 12, 2024 |
---|---|
0.7.2 | Sep 10, 2023 |
0.7.1 | Sep 2, 2023 |
0.7.0 | Aug 31, 2023 |
0.6.0 | Nov 10, 2021 |
#104 in HTTP client
945 downloads per month
Used in 4 crates
35KB
647 lines
http-range-client
HTTP client for HTTP Range requests with a buffer optimized for sequential reading.
Implements Seek+Read for blocking clients, which makes it a drop-in replacement for local files.
Usage examples
use http_range_client::*;
let mut client = BufferedHttpRangeClient::new("https://flatgeobuf.org/test/data/countries.fgb");
let bytes = client.min_req_size(256).get_range(0, 3).await?;
assert_eq!(bytes, b"fgb");
let version = client.get_bytes(1).await?; // From buffer - no HTTP request!
assert_eq!(version, [3]);
let mut reader = HttpReader::new("https://www.rust-lang.org/static/images/favicon-32x32.png");
reader.seek(SeekFrom::Start(1)).ok();
let mut bytes = [0; 3];
reader.read_exact(&mut bytes)?;
assert_eq!(&bytes, b"PNG");
Supported HTTP clients (feature flag)
- reqwest async (
reqwest-async
, default) - reqwest blocking (
reqwest-sync
, default): Not supported on Wasm target - ureq blocking (
ureq-sync
): Not supported on Wasm target
Other clients can be used via the AsyncBufferedHttpRangeClient
resp. SyncBufferedHttpRangeClient
adapter, after implementing the AsyncHttpRangeClient
resp. SyncHttpRangeClient
trait.
Dependencies
~0.5–13MB
~175K SLoC