#object-storage #storage #storage-service #s3 #acme #cages #evervault

storage-client-interface

一个用于与存储后端交互的 StorageClientInterface 特性的 Rust 库。由 Evervault Cages 使用。

2 个不稳定版本

0.2.0 2023 年 8 月 31 日
0.1.0 2023 年 8 月 30 日

#1386开发工具

Download history 8/week @ 2024-03-13 3/week @ 2024-03-20 41/week @ 2024-03-27 33/week @ 2024-04-03 3/week @ 2024-04-17 13/week @ 2024-04-24 43/week @ 2024-05-08 5/week @ 2024-05-15 7/week @ 2024-06-05 19/week @ 2024-06-12 49/week @ 2024-06-19 14/week @ 2024-06-26

89 每月下载量

Apache-2.0

9KB
130 代码行

storage-client-interface

StorageClientInterface 是一个定义与对象存储交互的一组方法的 trait。它提供了一种清晰且标准化的方式来执行从存储服务检索、上传和删除对象的常见操作。还提供了一个在 s3 特性下实现的 S3 实现,该特性包含在 default 特性中。

特性定义

use async_trait::async_trait;
use thiserror::Error;

#[derive(Error, Debug)]
pub enum StorageClientError {
    #[error("GetObject Error: {0}")]
    GetObject(String),
    #[error("PutObject Error: {0}")]
    PutObject(String),
    #[error("DeleteObject Error: {0}")]
    DeleteObject(String),
    #[error("Storage Client Error - {0}")]
    General(String),
}

#[async_trait]
pub trait StorageClientInterface {
    async fn get_object(&self, key: String) -> Result<Option<String>, StorageClientError>;
    async fn put_object(&self, key: String, body: String) -> Result<(), StorageClientError>;
    async fn delete_object(&self, key: String) -> Result<(), StorageClientError>;
}

方法

get_object

根据提供的键从存储服务检索对象。

async fn get_object(&self, key: String) -> Result<Option<String>, StorageClientError>;

put_object

使用给定的键和正文将对象上传到存储服务。

async fn put_object(&self, key: String, body: String) -> Result<(), StorageClientError>;

delete_object

使用指定的键从存储服务中删除对象。

async fn delete_object(&self, key: String) -> Result<(), StorageClientError>;

依赖关系

~0.3–6.5MB
~110K SLoC