Qiniu-Objects-Manager

qiniu-objects-manager docs.rs Run Test Cases GitHub release MIT licensed

概览

基于 qiniu-apis 提供针对七牛对象的管理功能 (同时提供阻塞客户端和异步客户端,异步客户端则需要启用 async 功能), 主要负责七牛对象的列举和操作。

安装

不启用异步接口,推荐使用 ureq

toml [dependencies] qiniu-objects-manager = { version = "0.1.4", features = ["ureq"] }

启用 Isahc 异步接口

toml [dependencies] qiniu-objects-manager = { version = "0.1.4", features = ["async", "isahc"] }

启用 Reqwest 异步接口

toml [dependencies] qiniu-objects-manager = { version = "0.1.4", features = ["async", "reqwest"] }

其他功能

c_ares

启用 c-ares 库作为 DNS 解析器

trust_dns

启用 trust-dns 库作为 DNS 解析器

dns-over-https

启用 trust-dns 库作为 DNS 解析器,并使用 DOH 协议

dns-over-tls

启用 trust-dns 库作为 DNS 解析器,并使用 DOT 协议

代码示例

阻塞代码示例

对象元信息获取

```rust use qiniuobjectsmanager::{apis::credential::Credential, ObjectsManager};

let credential = Credential::new("abcdefghklmnopq", "1234567890"); let objectmanager = ObjectsManager::new(credential); let bucket = objectmanager.bucket("test-bucket");

let response = bucket.statobject("test-key").call()?; let object = response.intobody(); println!("fsize: {}", object.getsizeasu64()); println!("hash: {}", object.gethashasstr()); println!("mimetype: {}", object.getmimetypeas_str()); ```

对象批量元信息获取

```rust use qiniuobjectsmanager::{apis::credential::Credential, ObjectsManager, OperationProvider}; use futures::stream::TryStreamExt;

let credential = Credential::new("abcdefghklmnopq", "1234567890"); let objectmanager = ObjectsManager::new(credential); let bucket = objectmanager.bucket("test-bucket"); let mut ops = bucket.batchops(); ops.addoperation(bucket.statobject("test-file-1")); ops.addoperation(bucket.statobject("test-file-2")); ops.addoperation(bucket.statobject("test-file-3")); ops.addoperation(bucket.statobject("test-file-4")); ops.addoperation(bucket.statobject("test-file-5")); let mut iter = ops.call(); while let Some(object) = iter.next() { let object = object?; println!("fsize: {:?}", object.getsizeasu64()); println!("hash: {:?}", object.gethashasstr()); println!("mimetype: {:?}", object.getmimetypeasstr()); } ```

对象列举

```rust use qiniuobjectsmanager::{apis::credential::Credential, ObjectsManager}; use futures::stream::TryStreamExt;

let credential = Credential::new("abcdefghklmnopq", "1234567890"); let objectmanager = ObjectsManager::new(credential); let bucket = objectmanager.bucket("test-bucket"); let mut iter = bucket.list().iter(); while let Some(object) = iter.next() { let object = object?; println!("fsize: {:?}", object.getsizeasu64()); println!("hash: {:?}", object.gethashasstr()); println!("mimetype: {:?}", object.getmimetypeas_str()); } ```

异步代码示例

对象元信息获取

```rust use qiniuobjectsmanager::{apis::credential::Credential, ObjectsManager};

let credential = Credential::new("abcdefghklmnopq", "1234567890"); let objectmanager = ObjectsManager::new(credential); let bucket = objectmanager.bucket("test-bucket");

let response = bucket.statobject("test-key").asynccall().await?; let object = response.intobody(); println!("fsize: {}", object.getsizeasu64()); println!("hash: {}", object.gethashasstr()); println!("mimetype: {}", object.getmimetypeasstr()); ```

对象批量元信息获取

```rust use qiniuobjectsmanager::{apis::credential::Credential, ObjectsManager, OperationProvider}; use futures::stream::TryStreamExt;

let credential = Credential::new("abcdefghklmnopq", "1234567890"); let objectmanager = ObjectsManager::new(credential); let bucket = objectmanager.bucket("test-bucket"); let mut ops = bucket.batchops(); ops.addoperation(bucket.statobject("test-file-1")); ops.addoperation(bucket.statobject("test-file-2")); ops.addoperation(bucket.statobject("test-file-3")); ops.addoperation(bucket.statobject("test-file-4")); ops.addoperation(bucket.statobject("test-file-5")); let mut stream = ops.asynccall(); while let Some(object) = stream.trynext().await? { println!("fsize: {:?}", object.getsizeasu64()); println!("hash: {:?}", object.gethashasstr()); println!("mimetype: {:?}", object.getmimetypeasstr()); } ```

对象列举

```rust use qiniuobjectsmanager::{apis::credential::Credential, ObjectsManager}; use futures::stream::TryStreamExt;

let credential = Credential::new("abcdefghklmnopq", "1234567890"); let objectmanager = ObjectsManager::new(credential); let bucket = objectmanager.bucket("test-bucket"); let mut stream = bucket.list().stream(); while let Some(object) = stream.trynext().await? { println!("fsize: {:?}", object.getsizeasu64()); println!("hash: {:?}", object.gethashasstr()); println!("mimetype: {:?}", object.getmimetypeasstr()); } ```

最低支持的 Rust 版本(MSRV)

1.60.0

联系我们

代码许可

This project is licensed under the [MIT license].