#http-request #http-header #http #retry #request #client

reqwest_resume

使用 Range HTTP 头部来恢复 GET 请求的包装器。它是 reqwest 的一个薄包装器。这是一个正在进行中的项目 - 按需复制包装功能。如果您需要什么,请随时提交 PR/issue。

6 个版本

0.3.2 2020 年 7 月 8 日
0.3.1 2020 年 5 月 16 日
0.3.0 2020 年 4 月 30 日
0.2.1 2019 年 9 月 7 日
0.1.0 2018 年 8 月 15 日

#33 in #retry


2 个 crate 中使用 (通过 amadeus-commoncrawl)

MIT/Apache

14KB
186 代码行

reqwest_resume

Crates.io MIT / Apache 2.0 licensed Build Status

📖 文档 | 💬 聊天

使用 Range HTTP 头部来恢复 GET 请求的包装器。

它是 reqwest 的一个薄包装器。这是一个正在进行中的项目 - 按需复制包装功能。如果您需要什么,请随时提交 PR/issue。

示例

use async_compression::futures::bufread::GzipDecoder;
use futures::{io::BufReader, AsyncBufReadExt, StreamExt, TryStreamExt};
use std::io;

#[tokio::main]
async fn main() {
    let url = "http://commoncrawl.s3.amazonaws.com/crawl-data/CC-MAIN-2018-30/warc.paths.gz";
    let body = reqwest_resume::get(url.parse().unwrap()).await.unwrap();
    // Content-Encoding isn't set, so decode manually
    let body = body
        .bytes_stream()
        .map_err(|e| io::Error::new(io::ErrorKind::Other, e));
    let body = BufReader::new(body.into_async_read());
    let mut body = GzipDecoder::new(body); // Content-Encoding isn't set, so decode manually
    body.multiple_members(true);

    let mut lines = BufReader::new(body).lines();
    while let Some(line) = lines.next().await {
        println!("{}", line.unwrap());
    }
}

许可证

许可证为以下之一

任选其一。

除非您明确声明,否则根据 Apache-2.0 许可证定义的您有意提交以包含在作品中的任何贡献,均应按上述方式双重许可,不得附加任何其他条款或条件。

依赖项

~7–11MB
~223K SLoC