#b2 #client #http #backblaze #async-http #api-client

b2-client

HTTP 客户端无关的 Backblaze B2 客户端库

4 个版本

0.1.3 2022年7月4日
0.1.2 2022年3月16日
0.1.1 2022年2月24日
0.1.0 2022年2月14日

271HTTP 客户端

Download history 4/week @ 2024-03-19 1/week @ 2024-03-26 37/week @ 2024-04-02 18/week @ 2024-04-09 8/week @ 2024-04-23 75/week @ 2024-04-30 33/week @ 2024-05-07 6/week @ 2024-05-14 8/week @ 2024-05-21 1/week @ 2024-05-28 6/week @ 2024-06-04 6/week @ 2024-06-11 11/week @ 2024-06-18 38/week @ 2024-06-25 15/week @ 2024-07-02

每月 70 次下载

MPL-2.0 许可证

345KB
7K SLoC

B2-client - 后端无关的 Backblaze B2 API 客户端

B2-client 提供了一个 Rust API,用于访问 Backblaze B2 云存储服务,支持任何异步 HTTP 客户端和任何异步运行时。

默认实现了对 HyperIsahcSurf 的支持。

B2-client 的官方仓库位于 SourceHut 的 https://git.sr.ht/~rjframe/b2-client,同时在 Github 上有一个镜像 https://github.com/rjframe/b2-client。两种方式都接受补丁/拉取请求;所有其他活动都在 SourceHut 进行。

目录

简介

B2-client 是一个不依赖于特定异步运行时和 HTTP 客户端的 Backblaze B2 API 接口。完全支持 B2 API。

注意,这些函数中的大多数可能会产生费用。

许可证

所有库源代码均根据 MPL 2.0 许可证 的条款进行许可。

示例代码的源代码根据 MIT 许可证 的条款进行许可。

入门指南

安装

要使用预包装的 HTTP 客户端,请通过相关功能选择后端。支持的功能包括

  • with_hyper
  • with_surf
  • with_isahc

此列表最终将使用更底层的客户端库(例如,h1 而不是 hyper)。

通过 cargo 将 b2-client 添加为依赖项;例如,要使用 Surf HTTP 客户端

cargo add b2-client --features with_surf

没有默认客户端,因此您必须选择上述功能之一或使用自定义HTTP客户端。要使用自己的HTTP后端,只需实现HttpClient特质,然后将结构体传递给account::authorize_account

测试

API调用通过surf后端使用预先录制的会话进行模拟,因此要运行所有测试,请运行cargo test --features=with_surf。默认情况下,不会针对实时B2服务运行任何测试。

要针对实时B2 API运行测试,请设置环境变量B2_CLIENT_TEST_KEYB2_CLIENT_TEST_KEY_ID为能够执行您要测试的任务的密钥/ID对,并将测试的VcrMode更改为Record。尽管没有重大破坏性测试(例如删除所有存储桶),但在不知道API做什么的情况下,不要对实时API运行测试,特别是如果您在生产账户上有密钥或存储桶。

一些测试可能需要对B2 API进行一些修改或设置才能运行(例如,删除存储桶,更改存储桶ID),并且如果设置了环境变量,一些测试将无法通过其预先录制的会话。

已知问题

  • 错误处理略有分叉;例如,没有WriteFiles能力的上传文件将返回Error::Unauthorized,但没有ReadFiles能力的私有存储桶上传将返回Error::B2Error

    这是因为我们可以在发起API调用之前验证写入授权,但不能预先验证读取授权。这是可以解决的;只需要确定合并它们的最优方法。

贡献

欢迎提交补丁和拉取请求。对于主要功能或重大变更,请先打开工单或开始讨论,以便我们可以讨论您想做什么。

有关设置指南,请参阅CONTRIBUTING.md。如果您需要任何指导,请随时在讨论或工单中提问,或提交一个草稿PR。

联系

依赖项

~5–22MB
~340K SLoC