pub trait ObjectClient {
    type GetObjectResult: Stream<Item = ObjectClientResult<GetBodyPart, GetObjectError, Self::ClientError>> + Send;
    type PutObjectRequest: PutObjectRequest<ClientError = Self::ClientError>;
    type ClientError: Error + Send + Sync + 'static;

    // Required methods
    fn part_size(&self) -> Option<usize>;
    async fn delete_object(
        &self,
        bucket: &str,
        key: &str
    ) -> ObjectClientResult<DeleteObjectResult, DeleteObjectError, Self::ClientError>;
    async fn get_object(
        &self,
        bucket: &str,
        key: &str,
        range: Option<Range<u64>>,
        if_match: Option<ETag>
    ) -> ObjectClientResult<Self::GetObjectResult, GetObjectError, Self::ClientError>;
    async fn list_objects(
        &self,
        bucket: &str,
        continuation_token: Option<&str>,
        delimiter: &str,
        max_keys: usize,
        prefix: &str
    ) -> ObjectClientResult<ListObjectsResult, ListObjectsError, Self::ClientError>;
    async fn head_object(
        &self,
        bucket: &str,
        key: &str
    ) -> ObjectClientResult<HeadObjectResult, HeadObjectError, Self::ClientError>;
    async fn put_object(
        &self,
        bucket: &str,
        key: &str,
        params: &PutObjectParams
    ) -> ObjectClientResult<Self::PutObjectRequest, PutObjectError, Self::ClientError>;
    async fn get_object_attributes(
        &self,
        bucket: &str,
        key: &str,
        max_parts: Option<usize>,
        part_number_marker: Option<usize>,
        object_attributes: &[ObjectAttribute]
    ) -> ObjectClientResult<GetObjectAttributesResult, GetObjectAttributesError, Self::ClientError>;
}
Expand description

A generic interface to S3-like object storage services.

This trait defines the common methods that all object services implement.

This is an async trait defined with the async-trait crate, and so implementations of this trait must use the #[async_trait::async_trait] attribute.

Required Associated Types§

Required Methods§

source

fn part_size(&self) -> Option<usize>

Query the part size this client uses for PUT and GET operations to the object store. This can be None if the client does not do multi-part operations.

source

async fn delete_object( &self, bucket: &str, key: &str ) -> ObjectClientResult<DeleteObjectResult, DeleteObjectError, Self::ClientError>

Delete a single object from the object store.

DeleteObject will succeed even if the object within the bucket does not exist.

source

async fn get_object( &self, bucket: &str, key: &str, range: Option<Range<u64>>, if_match: Option<ETag> ) -> ObjectClientResult<Self::GetObjectResult, GetObjectError, Self::ClientError>

Get an object from the object store. Returns a stream of body parts of the object. Parts are guaranteed to be returned by the stream in order and contiguously.

source

async fn list_objects( &self, bucket: &str, continuation_token: Option<&str>, delimiter: &str, max_keys: usize, prefix: &str ) -> ObjectClientResult<ListObjectsResult, ListObjectsError, Self::ClientError>

List the objects in a bucket under a given prefix

source

async fn head_object( &self, bucket: &str, key: &str ) -> ObjectClientResult<HeadObjectResult, HeadObjectError, Self::ClientError>

Retrieve object metadata without retrieving the object contents

source

async fn put_object( &self, bucket: &str, key: &str, params: &PutObjectParams ) -> ObjectClientResult<Self::PutObjectRequest, PutObjectError, Self::ClientError>

Put an object into the object store. Returns a PutObjectRequest for callers to provide the content of the object.

source

async fn get_object_attributes( &self, bucket: &str, key: &str, max_parts: Option<usize>, part_number_marker: Option<usize>, object_attributes: &[ObjectAttribute] ) -> ObjectClientResult<GetObjectAttributesResult, GetObjectAttributesError, Self::ClientError>

Retrieves all the metadata from an object without returning the object contents.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<T: ObjectClient + ?Sized> ObjectClient for Arc<T>

§

type GetObjectResult = <T as ObjectClient>::GetObjectResult

§

type PutObjectRequest = <T as ObjectClient>::PutObjectRequest

§

type ClientError = <T as ObjectClient>::ClientError

source§

fn part_size(&self) -> Option<usize>

source§

async fn delete_object( &self, bucket: &str, key: &str ) -> ObjectClientResult<DeleteObjectResult, DeleteObjectError, Self::ClientError>

source§

async fn get_object( &self, bucket: &str, key: &str, range: Option<Range<u64>>, if_match: Option<ETag> ) -> ObjectClientResult<Self::GetObjectResult, GetObjectError, Self::ClientError>

source§

async fn list_objects( &self, bucket: &str, continuation_token: Option<&str>, delimiter: &str, max_keys: usize, prefix: &str ) -> ObjectClientResult<ListObjectsResult, ListObjectsError, Self::ClientError>

source§

async fn head_object( &self, bucket: &str, key: &str ) -> ObjectClientResult<HeadObjectResult, HeadObjectError, Self::ClientError>

source§

async fn put_object( &self, bucket: &str, key: &str, params: &PutObjectParams ) -> ObjectClientResult<Self::PutObjectRequest, PutObjectError, Self::ClientError>

source§

async fn get_object_attributes( &self, bucket: &str, key: &str, max_parts: Option<usize>, part_number_marker: Option<usize>, object_attributes: &[ObjectAttribute] ) -> ObjectClientResult<GetObjectAttributesResult, GetObjectAttributesError, Self::ClientError>

Implementors§