Crates.io | minio-rsc |
lib.rs | minio-rsc |
version | 0.2.3 |
source | src |
created_at | 2023-02-08 09:06:25.2534 |
updated_at | 2024-07-22 09:26:40.453188 |
description | rust for minio, api is compliant with the Amazon S3 protocol. |
homepage | |
repository | https://gitee.com/krealseu/minio-rsc |
max_upload_size | |
id | 779502 |
size | 298,761 |
Rust Library for Minio. API is compliant with the Amazon S3 protocol.
use minio_rsc::client::{BucketArgs, KeyArgs};
use minio_rsc::error::Result;
use minio_rsc::provider::StaticProvider;
use minio_rsc::Minio;
async fn example() -> Result<()> {
let provider = StaticProvider::new("minio-access-key-test", "minio-secret-key-test", None);
let minio = Minio::builder()
.endpoint("localhost:9022")
.provider(provider)
.secure(false)
.build()
.unwrap();
let (buckets, owner) = minio.list_buckets().await?;
minio.make_bucket(BucketArgs::new("bucket1"), false).await?;
minio.make_bucket("bucket2", true).await?;
minio.put_object("bucket1", "hello.txt", "hello minio!".into()).await?;
minio.stat_object("bucket1", "hello.txt").await?;
minio.get_object("bucket1", "hello.txt").await?;
let key = KeyArgs::new("hello.txt").version_id(Some("cdabf31a-9752-4265-b137-6b3961fbaf9b".to_string()));
minio.get_object("bucket1", key).await?;
minio.remove_object("bucket1", "hello.txt").await?;
let bucket2 = minio.bucket("bucket2");
bucket2.put_object("hello.txt", "hello minio!".into()).await?;
bucket2.stat_object("hello.txt").await?;
bucket2.get_object("hello.txt").await?;
bucket2.remove_object("hello.txt").await?;
// if fs-tokio feature enabled
// download file to local
minio.fget_object("bucket1", "hello.txt", "local.txt").await?;
// upload file to minio
minio.fput_object("bucket1", "hello.txt", "local.txt").await?;
minio.remove_bucket("bucket1").await?;
minio.remove_bucket("bucket2").await?;
Ok(())
}
fs-tokio
which provides asynchronous local file operations based on the tokio. fput_object, fget_objectImplemented by BaseExecutor
use minio_rsc::Minio;
use hyper::Method;
use minio_rsc::errors::Result;
use reqwest::Response;
use bytes::Bytes;
async fn get_object(minio:Minio)-> Result<Response> {
let executor = minio.executor(Method::GET);
let res: Response = executor
.bucket_name("bucket")
.object_name("test.txt")
.query("versionId", "cdabf31a-9752-4265-b137-6b3961fbaf9b")
.send_ok()
.await?;
Ok(res)
}
async fn put_object(minio:Minio, data:Bytes)-> Result<()> {
let executor = minio.executor(Method::PUT);
let res: Response = executor
.bucket_name("bucket")
.object_name("test.txt")
.body(data)
.send_ok()
.await?;
Ok(())
}