object-store-wasm 0.0.7

WebAssembly object_store implementation
Documentation
use std::convert::Infallible;

use aws_sdk_s3::{
    error::SdkError,
    operation::{
        abort_multipart_upload::AbortMultipartUploadError,
        complete_multipart_upload::CompleteMultipartUploadError, copy_object::CopyObjectError,
        create_multipart_upload::CreateMultipartUploadError, delete_object::DeleteObjectError,
        get_object::GetObjectError, head_object::HeadObjectError,
        list_objects_v2::ListObjectsV2Error, put_object::PutObjectError,
        upload_part::UploadPartError,
    },
    primitives::SdkBody,
};
use thiserror::Error;

#[derive(Error, Debug)]
pub enum Error {
    #[error("S3 infallble")]
    S3Infallible(#[from] SdkError<Infallible, http::response::Response<SdkBody>>),
    #[error("S3 head object error")]
    S3Head(#[from] SdkError<HeadObjectError, http::response::Response<SdkBody>>),
    #[error("S3 uploadpart object error")]
    S3UploadPart(#[from] SdkError<UploadPartError, http::response::Response<SdkBody>>),
    #[error("S3 create multipart error")]
    S3CreateMultipart(
        #[from] SdkError<CreateMultipartUploadError, http::response::Response<SdkBody>>,
    ),
    #[error("S3 complete multipart error")]
    S3CompleteMultipart(
        #[from] SdkError<CompleteMultipartUploadError, http::response::Response<SdkBody>>,
    ),
    #[error("S3 abort multipart error")]
    S3AbortMultipart(
        #[from] SdkError<AbortMultipartUploadError, http::response::Response<SdkBody>>,
    ),
    #[error("S3 get object error")]
    S3GetObject(#[from] SdkError<GetObjectError, http::response::Response<SdkBody>>),
    #[error("S3 pu object error")]
    S3PutObject(#[from] SdkError<PutObjectError, http::response::Response<SdkBody>>),
    #[error("S3 copy object error")]
    S3CopyObject(#[from] SdkError<CopyObjectError, http::response::Response<SdkBody>>),
    #[error("S3 delete object error")]
    S3DeleteObject(#[from] SdkError<DeleteObjectError, http::response::Response<SdkBody>>),
    #[error("S3 list objects error")]
    S3ListObjects(#[from] SdkError<ListObjectsV2Error, http::response::Response<SdkBody>>),
    #[error("S3 conversion error")]
    S3Conversion(#[from] aws_smithy_types::date_time::ConversionError),
    #[error("Parse int error")]
    ParseInt(#[from] std::num::ParseIntError),
    #[error("unknown object store error")]
    Unknown,
}

impl From<Error> for object_store::Error {
    fn from(value: Error) -> Self {
        object_store::Error::Generic {
            store: "S3",
            source: Box::new(value),
        }
    }
}