minior
Ergonomic client for Minio, built on top of the aws_sdk_s3 crate.
Table of Contents
- Requirements
- Installation
- Documentation
- Usage
- Bug Reports
- Feature Requests
- Contributing
- Project Status
- License
Requirements
- Minio deployment:
- Rust (version 1.6+):
Installation
cargo add minior
Documentation
This README provides a general overview, but does not go over all methods available. Full crate documentation can be found here at docs.rs
Usage
Overview
The crate exposes a struct Minio that can be used to interface with all core modules, however core is public so feel free to interact with those methods directly.
Basic Example
use minior::Minio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Construct a client
let minio = Minio::new("http://127.0.0.1:9000").await;
// Create a bucket
minio.create_bucket("sharks").await?;
// Upload a object
let file = tokio::fs::File::open("some file path").await?;
minio.upload_object(
"sharks",
"shark",
file,
None,
None,
).await?;
// Get a Presigned URL for a get that expires in 1_337 seconds
let presigned_request = minio.get_object_presigned(
"sharks",
"shark",
1_337,
).await?;
// Delete a object
minio.delete_object(
"sharks",
"shark",
).await?;
// Delete a bucket
minio.delete_bucket(
"sharks",
true,
).await?;
Ok(())
}
Bug Reports
Please report bugs by creating an issue, or if there is a sufficient fix you are aware of, feel free to open a PR, but please follow the Contributing guidelines below.
To report a bug, it must be directly related to this crate, and you must provide as much information as possible, such as:
-
Code examples
-
Error messages
-
Steps to reproduce
-
System information (If applicable)
Feature requests
If you feel there is something missing, or some variation of the current crate that would require additional dependencies other than aws-sdk-s3, aws-config or tokio; please create an issue with the request and discuss why you feel it should be part of this crate and not a third party crate.
Contributing
I welcome anyone to contribute to the crate. But I do have some general requirements:
-
Any additional or modified methods require unit testing with 100% test coverage, that should be placed in the
testsmodule. -
Any change that adds in additional dependencies should be created as a separate feature.
-
All current unit tests must pass, I.E. run
cargo testand all should pass. -
Add your name and or handle to
CONTRIBUTORS.mdif not already present, as well as to theAuthorssection on the header comment for the file. -
If adding in a new dependency, please update
License::Third Partyin this README to correspond with their licensing.
If your change meets these guidelines, feel free to open a PR.
Project Status
I plan to maintain this crate for the forseeable future.
License
MIT
See LICENSE.md for more information
Third Party
This crate is built on-top of:
-
The
aws-configandaws-sdk-s3crates, which is licensed under Apache License 2.0, view it here. -
The
tokiocrate, which is licensed under MIT, view it here. -
The
uuidcrate (Used in internal testing), which is licensed under MIT, view it here or Apache 2.0, view it here. -
The
reqwestcrate (Used in internal testing), which is licensed under MIT, view it here or Apache 2.0, view it here.