1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
use crate::errors::S3StorageResult;
use crate::dto::{
CompleteMultipartUploadError, CompleteMultipartUploadOutput, CompleteMultipartUploadRequest,
CopyObjectError, CopyObjectOutput, CopyObjectRequest, CreateBucketError, CreateBucketOutput,
CreateBucketRequest, CreateMultipartUploadError, CreateMultipartUploadOutput,
CreateMultipartUploadRequest, DeleteBucketError, DeleteBucketOutput, DeleteBucketRequest,
DeleteObjectError, DeleteObjectOutput, DeleteObjectRequest, DeleteObjectsError,
DeleteObjectsOutput, DeleteObjectsRequest, GetBucketLocationError, GetBucketLocationOutput,
GetBucketLocationRequest, GetObjectError, GetObjectOutput, GetObjectRequest, HeadBucketError,
HeadBucketOutput, HeadBucketRequest, HeadObjectError, HeadObjectOutput, HeadObjectRequest,
ListBucketsError, ListBucketsOutput, ListBucketsRequest, ListObjectsError, ListObjectsOutput,
ListObjectsRequest, ListObjectsV2Error, ListObjectsV2Output, ListObjectsV2Request,
PutObjectError, PutObjectOutput, PutObjectRequest, UploadPartError, UploadPartOutput,
UploadPartRequest,
};
use async_trait::async_trait;
#[async_trait]
pub trait S3Storage {
async fn complete_multipart_upload(
&self,
input: CompleteMultipartUploadRequest,
) -> S3StorageResult<CompleteMultipartUploadOutput, CompleteMultipartUploadError>;
async fn copy_object(
&self,
input: CopyObjectRequest,
) -> S3StorageResult<CopyObjectOutput, CopyObjectError>;
async fn create_multipart_upload(
&self,
input: CreateMultipartUploadRequest,
) -> S3StorageResult<CreateMultipartUploadOutput, CreateMultipartUploadError>;
async fn create_bucket(
&self,
input: CreateBucketRequest,
) -> S3StorageResult<CreateBucketOutput, CreateBucketError>;
async fn delete_bucket(
&self,
input: DeleteBucketRequest,
) -> S3StorageResult<DeleteBucketOutput, DeleteBucketError>;
async fn delete_object(
&self,
input: DeleteObjectRequest,
) -> S3StorageResult<DeleteObjectOutput, DeleteObjectError>;
async fn delete_objects(
&self,
input: DeleteObjectsRequest,
) -> S3StorageResult<DeleteObjectsOutput, DeleteObjectsError>;
async fn get_bucket_location(
&self,
input: GetBucketLocationRequest,
) -> S3StorageResult<GetBucketLocationOutput, GetBucketLocationError>;
async fn get_object(
&self,
input: GetObjectRequest,
) -> S3StorageResult<GetObjectOutput, GetObjectError>;
async fn head_bucket(
&self,
input: HeadBucketRequest,
) -> S3StorageResult<HeadBucketOutput, HeadBucketError>;
async fn head_object(
&self,
input: HeadObjectRequest,
) -> S3StorageResult<HeadObjectOutput, HeadObjectError>;
async fn list_buckets(
&self,
input: ListBucketsRequest,
) -> S3StorageResult<ListBucketsOutput, ListBucketsError>;
async fn list_objects(
&self,
input: ListObjectsRequest,
) -> S3StorageResult<ListObjectsOutput, ListObjectsError>;
async fn list_objects_v2(
&self,
input: ListObjectsV2Request,
) -> S3StorageResult<ListObjectsV2Output, ListObjectsV2Error>;
async fn put_object(
&self,
input: PutObjectRequest,
) -> S3StorageResult<PutObjectOutput, PutObjectError>;
async fn upload_part(
&self,
input: UploadPartRequest,
) -> S3StorageResult<UploadPartOutput, UploadPartError>;
}