14 releases
0.1.14 | Jul 23, 2024 |
---|---|
0.1.13 | Jul 15, 2024 |
0.1.12 | Jun 4, 2024 |
0.1.11 | May 7, 2024 |
0.1.4 | Jan 16, 2024 |
#179 in Asynchronous
5.5MB
1.5K
SLoC
minior
Ergonomic client for Minio, built on top of the aws_sdk_s3
crate.
Table of Contents
- Requirements
- Installation
- Documentation
- Usage
- Features
- 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,
).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(())
}
Features
pagination_iter
: gives access toObjectPaginationIter
to asynchronously paginate through objects for a bucket viacore::pagination_iter
orMinio::pagination_object_iter
.
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
tests
module. -
Any change that adds in additional dependencies should be created as a separate feature.
-
All current unit tests must pass, I.E. run
cargo test
and all should pass. -
Add your name and or handle to
CONTRIBUTORS.md
if not already present, as well as to theAuthors
section on the header comment for the file. -
If adding in a new dependency, please update
License::Third Party
in 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-config
andaws-sdk-s3
andaws-smithy-async
crates, which is licensed under Apache License 2.0, view it here. -
The
tokio
crate, which is licensed under MIT, view it here. -
The
uuid
crate (Used in internal testing), which is licensed under MIT, view it here or Apache 2.0, view it here. -
The
reqwest
crate (Used in internal testing), which is licensed under MIT, view it here or Apache 2.0, view it here.
Dependencies
~30MB
~407K SLoC