5 个版本

0.1.13 2024 年 2 月 21 日
0.1.12 2024 年 2 月 21 日
0.1.11 2024 年 2 月 20 日
0.1.1 2024 年 2 月 20 日
0.1.0 2024 年 1 月 15 日

#20 in #building-block

MIT 许可证

10KB
131

GET_VEC

get_vec(...) 方法允许以 Vec<&str> 形式异步获取 URL 的请求,例如。

let api = API::new();

#[threads(2)]
api.get_vec(urls, DATA_PATH).await;

这将检索 urls vec 中的两个文件,并将它们下载到 "src/" 目录,使用 2 个异步线程。

包括 "header" 和 "threads" 宏;header 添加自定义头信息,threads 指定要打开的线程数。默认情况下,threads 设置为 1。

以下是一个示例

#[tokio::main]
fn main() {
    let mut api = API::new(); // runner required to be mut for header changes
    let SAVE_PATH: &str = "./data";

    // Visit the first api, needing only the User-Agent (with only 1 thread)
    //

    let api_1 = vec![
        "www.endpoint_1.xml",
        "www.endpoint_2.json"
    ];

    #[header("User-Agent", "example@email_domain.com")]
    api.get_vec(api_1, ).await;
    


    // Visit the second api, now needing an API key; referred to as "API-Token"
    // (Opening 2 threads at once)
    //

    let api_2 = vec![
        "www.endpoint_3.xml",
        "www.endpoint_4.csv"
    ];

    #[threads(2)]
    #[header("User-Agent", "example@email_domain.com")]
    #[header("API-Token", "XXXXXXXXX")]
    api.get_vec(api_2, ).await;
}

待办事项!

  • request_per_second 包装器 + proc_macro
  • 添加日志记录器(带布尔选项)
  • 添加 thiserror
  • 确定是否可以使用泛型类型定义 get_vec

依赖项

~7–19MB
~282K SLoC