10 releases

new 0.1.10 Apr 25, 2024
0.1.9 Feb 9, 2024
0.1.4 Jan 16, 2024

#3 in #bucket

Download history 4/week @ 2024-01-04 11/week @ 2024-01-11 9/week @ 2024-02-01 8/week @ 2024-02-08 3/week @ 2024-02-15 10/week @ 2024-02-22 8/week @ 2024-02-29 48/week @ 2024-03-28 20/week @ 2024-04-04

68 downloads per month

MIT license

4MB
1.5K SLoC

minior

Ergonomic client for Minio, built on top of the aws_sdk_s3 crate.

Table of Contents

Requirements

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 to ObjectPaginationIter to asynchronously paginate through objects for a bucket via core::pagination_iter or Minio::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 the Authors 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:

Dependencies

~27MB
~427K SLoC