minio-rsc

Rust Library for Minio. API is compliant with the Amazon S3 protocol.
Minio client
use minio_rsc::Minio;
use minio_rsc::provider::StaticProvider;
use minio_rsc::errors::Result;
use minio_rsc::types::args::{BucketArgs, ObjectArgs};
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?;
minio.get_object(
ObjectArgs::new("bucket1","hello.txt")
.version_id(Some("cdabf31a-9752-4265-b137-6b3961fbaf9b".to_string()))
).await?;
minio.fget_object(("bucket1","hello.txt"), "local.txt").await?;
minio.fput_object(("bucket1","hello.txt"), "local.txt").await?;
minio.remove_object(("bucket1","hello.txt")).await?;
minio.remove_bucket("bucket1").await?;
minio.remove_bucket("bucket2").await?;
Ok(())
}
Operations
Features
Custom requests
Implemented 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(())
}