10 个版本
0.1.9 | 2021 年 4 月 29 日 |
---|---|
0.1.8 | 2021 年 4 月 29 日 |
0.1.6 | 2021 年 3 月 29 日 |
#32 in #云存储
114 个月下载量
43KB
923 代码行
cloud-storage-lite
一个简单、灵活的 Google Cloud Storage 客户端(GCS)。
这个库的功能不如cloud-storage 那样丰富,但如果您
- 使用像 Vault 这样的密钥保管器
- 通常与单个存储桶(使用存储桶范围客户端)一起工作
- 希望在程序中使用多个客户端或 tokio 运行时
- 需要规范化的错误(404 只有一个错误变体)
示例
use std::{error::Error, convert::Infallible};
use cloud_storage_lite::{
self as gcs,
client::BucketClient,
token_provider::{
self,
oauth::{self, OAuthTokenProvider, ServiceAccount}},
};
use futures::{future, stream, TryStreamExt};
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error + 'static>> {
let token_provider =
token_provider::RenewingTokenProvider::new(
OAuthTokenProvider::new(
ServiceAccount::read_from_canonical_env()?,
oauth::SCOPE_STORAGE_FULL_CONTROL,
)?
);
let client = gcs::Client::new(token_provider)
.into_bucket_client("my-bucket".into());
client
.create_object(
"key",
stream::once(
future::ok::<_, Infallible>(b"value".to_vec())
)
)
.await?;
let object = client.get_object("key").await?;
let value_bytes = client
.download_object(&object.name)
.await?
.map_ok(|chunk| chunk.to_vec())
.try_concat()
.await?;
println!(
"the value is: {}",
String::from_utf8(value_bytes)?
);
Ok(())
}
依赖项
~8–24MB
~364K SLoC