minior

Crates.iominior
lib.rsminior
version0.1.11
sourcesrc
created_at2024-01-06 23:50:29.979673
updated_at2024-05-07 19:30:57.51951
descriptionErgonomic Minio Client
homepage
repositoryhttps://gitlab.com/robertlopezdev/minior
max_upload_size
id1091309
size3,829,215
(robertlopezdev)

documentation

README

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:

Commit count: 64

cargo fmt