1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5pub enum S3Operation {
6 CreateBucket,
8 DeleteBucket,
10 HeadBucket,
12 ListBuckets,
14 GetBucketLocation,
16 GetBucketVersioning,
18 PutBucketVersioning,
20 GetBucketEncryption,
22 PutBucketEncryption,
24 DeleteBucketEncryption,
26 GetBucketCors,
28 PutBucketCors,
30 DeleteBucketCors,
32 GetBucketLifecycleConfiguration,
34 PutBucketLifecycleConfiguration,
36 DeleteBucketLifecycle,
38 GetBucketPolicy,
40 PutBucketPolicy,
42 DeleteBucketPolicy,
44 GetBucketTagging,
46 PutBucketTagging,
48 DeleteBucketTagging,
50 GetBucketNotificationConfiguration,
52 PutBucketNotificationConfiguration,
54 GetBucketLogging,
56 PutBucketLogging,
58 GetPublicAccessBlock,
60 PutPublicAccessBlock,
62 DeletePublicAccessBlock,
64 GetBucketOwnershipControls,
66 PutBucketOwnershipControls,
68 DeleteBucketOwnershipControls,
70 GetObjectLockConfiguration,
72 PutObjectLockConfiguration,
74 GetBucketAccelerateConfiguration,
76 PutBucketAccelerateConfiguration,
78 GetBucketRequestPayment,
80 PutBucketRequestPayment,
82 GetBucketWebsite,
84 PutBucketWebsite,
86 DeleteBucketWebsite,
88 GetBucketAcl,
90 PutBucketAcl,
92 GetBucketPolicyStatus,
94 PutObject,
96 GetObject,
98 HeadObject,
100 DeleteObject,
102 DeleteObjects,
104 CopyObject,
106 GetObjectTagging,
108 PutObjectTagging,
110 DeleteObjectTagging,
112 GetObjectAcl,
114 PutObjectAcl,
116 GetObjectRetention,
118 PutObjectRetention,
120 GetObjectLegalHold,
122 PutObjectLegalHold,
124 GetObjectAttributes,
126 CreateMultipartUpload,
128 UploadPart,
130 UploadPartCopy,
132 CompleteMultipartUpload,
134 AbortMultipartUpload,
136 ListParts,
138 ListMultipartUploads,
140 ListObjects,
142 ListObjectsV2,
144 ListObjectVersions,
146 PostObject,
148}
149
150impl S3Operation {
151 #[must_use]
153 pub fn as_str(&self) -> &'static str {
154 match self {
155 Self::CreateBucket => "CreateBucket",
156 Self::DeleteBucket => "DeleteBucket",
157 Self::HeadBucket => "HeadBucket",
158 Self::ListBuckets => "ListBuckets",
159 Self::GetBucketLocation => "GetBucketLocation",
160 Self::GetBucketVersioning => "GetBucketVersioning",
161 Self::PutBucketVersioning => "PutBucketVersioning",
162 Self::GetBucketEncryption => "GetBucketEncryption",
163 Self::PutBucketEncryption => "PutBucketEncryption",
164 Self::DeleteBucketEncryption => "DeleteBucketEncryption",
165 Self::GetBucketCors => "GetBucketCors",
166 Self::PutBucketCors => "PutBucketCors",
167 Self::DeleteBucketCors => "DeleteBucketCors",
168 Self::GetBucketLifecycleConfiguration => "GetBucketLifecycleConfiguration",
169 Self::PutBucketLifecycleConfiguration => "PutBucketLifecycleConfiguration",
170 Self::DeleteBucketLifecycle => "DeleteBucketLifecycle",
171 Self::GetBucketPolicy => "GetBucketPolicy",
172 Self::PutBucketPolicy => "PutBucketPolicy",
173 Self::DeleteBucketPolicy => "DeleteBucketPolicy",
174 Self::GetBucketTagging => "GetBucketTagging",
175 Self::PutBucketTagging => "PutBucketTagging",
176 Self::DeleteBucketTagging => "DeleteBucketTagging",
177 Self::GetBucketNotificationConfiguration => "GetBucketNotificationConfiguration",
178 Self::PutBucketNotificationConfiguration => "PutBucketNotificationConfiguration",
179 Self::GetBucketLogging => "GetBucketLogging",
180 Self::PutBucketLogging => "PutBucketLogging",
181 Self::GetPublicAccessBlock => "GetPublicAccessBlock",
182 Self::PutPublicAccessBlock => "PutPublicAccessBlock",
183 Self::DeletePublicAccessBlock => "DeletePublicAccessBlock",
184 Self::GetBucketOwnershipControls => "GetBucketOwnershipControls",
185 Self::PutBucketOwnershipControls => "PutBucketOwnershipControls",
186 Self::DeleteBucketOwnershipControls => "DeleteBucketOwnershipControls",
187 Self::GetObjectLockConfiguration => "GetObjectLockConfiguration",
188 Self::PutObjectLockConfiguration => "PutObjectLockConfiguration",
189 Self::GetBucketAccelerateConfiguration => "GetBucketAccelerateConfiguration",
190 Self::PutBucketAccelerateConfiguration => "PutBucketAccelerateConfiguration",
191 Self::GetBucketRequestPayment => "GetBucketRequestPayment",
192 Self::PutBucketRequestPayment => "PutBucketRequestPayment",
193 Self::GetBucketWebsite => "GetBucketWebsite",
194 Self::PutBucketWebsite => "PutBucketWebsite",
195 Self::DeleteBucketWebsite => "DeleteBucketWebsite",
196 Self::GetBucketAcl => "GetBucketAcl",
197 Self::PutBucketAcl => "PutBucketAcl",
198 Self::GetBucketPolicyStatus => "GetBucketPolicyStatus",
199 Self::PutObject => "PutObject",
200 Self::GetObject => "GetObject",
201 Self::HeadObject => "HeadObject",
202 Self::DeleteObject => "DeleteObject",
203 Self::DeleteObjects => "DeleteObjects",
204 Self::CopyObject => "CopyObject",
205 Self::GetObjectTagging => "GetObjectTagging",
206 Self::PutObjectTagging => "PutObjectTagging",
207 Self::DeleteObjectTagging => "DeleteObjectTagging",
208 Self::GetObjectAcl => "GetObjectAcl",
209 Self::PutObjectAcl => "PutObjectAcl",
210 Self::GetObjectRetention => "GetObjectRetention",
211 Self::PutObjectRetention => "PutObjectRetention",
212 Self::GetObjectLegalHold => "GetObjectLegalHold",
213 Self::PutObjectLegalHold => "PutObjectLegalHold",
214 Self::GetObjectAttributes => "GetObjectAttributes",
215 Self::CreateMultipartUpload => "CreateMultipartUpload",
216 Self::UploadPart => "UploadPart",
217 Self::UploadPartCopy => "UploadPartCopy",
218 Self::CompleteMultipartUpload => "CompleteMultipartUpload",
219 Self::AbortMultipartUpload => "AbortMultipartUpload",
220 Self::ListParts => "ListParts",
221 Self::ListMultipartUploads => "ListMultipartUploads",
222 Self::ListObjects => "ListObjects",
223 Self::ListObjectsV2 => "ListObjectsV2",
224 Self::ListObjectVersions => "ListObjectVersions",
225 Self::PostObject => "PostObject",
226 }
227 }
228
229 #[must_use]
231 pub fn from_name(name: &str) -> Option<Self> {
232 match name {
233 "CreateBucket" => Some(Self::CreateBucket),
234 "DeleteBucket" => Some(Self::DeleteBucket),
235 "HeadBucket" => Some(Self::HeadBucket),
236 "ListBuckets" => Some(Self::ListBuckets),
237 "GetBucketLocation" => Some(Self::GetBucketLocation),
238 "GetBucketVersioning" => Some(Self::GetBucketVersioning),
239 "PutBucketVersioning" => Some(Self::PutBucketVersioning),
240 "GetBucketEncryption" => Some(Self::GetBucketEncryption),
241 "PutBucketEncryption" => Some(Self::PutBucketEncryption),
242 "DeleteBucketEncryption" => Some(Self::DeleteBucketEncryption),
243 "GetBucketCors" => Some(Self::GetBucketCors),
244 "PutBucketCors" => Some(Self::PutBucketCors),
245 "DeleteBucketCors" => Some(Self::DeleteBucketCors),
246 "GetBucketLifecycleConfiguration" => Some(Self::GetBucketLifecycleConfiguration),
247 "PutBucketLifecycleConfiguration" => Some(Self::PutBucketLifecycleConfiguration),
248 "DeleteBucketLifecycle" => Some(Self::DeleteBucketLifecycle),
249 "GetBucketPolicy" => Some(Self::GetBucketPolicy),
250 "PutBucketPolicy" => Some(Self::PutBucketPolicy),
251 "DeleteBucketPolicy" => Some(Self::DeleteBucketPolicy),
252 "GetBucketTagging" => Some(Self::GetBucketTagging),
253 "PutBucketTagging" => Some(Self::PutBucketTagging),
254 "DeleteBucketTagging" => Some(Self::DeleteBucketTagging),
255 "GetBucketNotificationConfiguration" => Some(Self::GetBucketNotificationConfiguration),
256 "PutBucketNotificationConfiguration" => Some(Self::PutBucketNotificationConfiguration),
257 "GetBucketLogging" => Some(Self::GetBucketLogging),
258 "PutBucketLogging" => Some(Self::PutBucketLogging),
259 "GetPublicAccessBlock" => Some(Self::GetPublicAccessBlock),
260 "PutPublicAccessBlock" => Some(Self::PutPublicAccessBlock),
261 "DeletePublicAccessBlock" => Some(Self::DeletePublicAccessBlock),
262 "GetBucketOwnershipControls" => Some(Self::GetBucketOwnershipControls),
263 "PutBucketOwnershipControls" => Some(Self::PutBucketOwnershipControls),
264 "DeleteBucketOwnershipControls" => Some(Self::DeleteBucketOwnershipControls),
265 "GetObjectLockConfiguration" => Some(Self::GetObjectLockConfiguration),
266 "PutObjectLockConfiguration" => Some(Self::PutObjectLockConfiguration),
267 "GetBucketAccelerateConfiguration" => Some(Self::GetBucketAccelerateConfiguration),
268 "PutBucketAccelerateConfiguration" => Some(Self::PutBucketAccelerateConfiguration),
269 "GetBucketRequestPayment" => Some(Self::GetBucketRequestPayment),
270 "PutBucketRequestPayment" => Some(Self::PutBucketRequestPayment),
271 "GetBucketWebsite" => Some(Self::GetBucketWebsite),
272 "PutBucketWebsite" => Some(Self::PutBucketWebsite),
273 "DeleteBucketWebsite" => Some(Self::DeleteBucketWebsite),
274 "GetBucketAcl" => Some(Self::GetBucketAcl),
275 "PutBucketAcl" => Some(Self::PutBucketAcl),
276 "GetBucketPolicyStatus" => Some(Self::GetBucketPolicyStatus),
277 "PutObject" => Some(Self::PutObject),
278 "GetObject" => Some(Self::GetObject),
279 "HeadObject" => Some(Self::HeadObject),
280 "DeleteObject" => Some(Self::DeleteObject),
281 "DeleteObjects" => Some(Self::DeleteObjects),
282 "CopyObject" => Some(Self::CopyObject),
283 "GetObjectTagging" => Some(Self::GetObjectTagging),
284 "PutObjectTagging" => Some(Self::PutObjectTagging),
285 "DeleteObjectTagging" => Some(Self::DeleteObjectTagging),
286 "GetObjectAcl" => Some(Self::GetObjectAcl),
287 "PutObjectAcl" => Some(Self::PutObjectAcl),
288 "GetObjectRetention" => Some(Self::GetObjectRetention),
289 "PutObjectRetention" => Some(Self::PutObjectRetention),
290 "GetObjectLegalHold" => Some(Self::GetObjectLegalHold),
291 "PutObjectLegalHold" => Some(Self::PutObjectLegalHold),
292 "GetObjectAttributes" => Some(Self::GetObjectAttributes),
293 "CreateMultipartUpload" => Some(Self::CreateMultipartUpload),
294 "UploadPart" => Some(Self::UploadPart),
295 "UploadPartCopy" => Some(Self::UploadPartCopy),
296 "CompleteMultipartUpload" => Some(Self::CompleteMultipartUpload),
297 "AbortMultipartUpload" => Some(Self::AbortMultipartUpload),
298 "ListParts" => Some(Self::ListParts),
299 "ListMultipartUploads" => Some(Self::ListMultipartUploads),
300 "ListObjects" => Some(Self::ListObjects),
301 "ListObjectsV2" => Some(Self::ListObjectsV2),
302 "ListObjectVersions" => Some(Self::ListObjectVersions),
303 "PostObject" => Some(Self::PostObject),
304 _ => None,
305 }
306 }
307}
308
309impl std::fmt::Display for S3Operation {
310 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
311 f.write_str(self.as_str())
312 }
313}