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
use crate::serde_types::CompleteMultipartUploadData; use reqwest::Method; use reqwest::header::HeaderMap; #[derive(Clone, Debug)] pub enum Command<'a> { DeleteObject, DeleteObjectTagging, GetObject, GetObjectTagging, PutObject { content: &'a [u8], content_type: &'a str, }, PutObjectTagging { tags: &'a str, }, ListBucket { prefix: String, delimiter: Option<String>, continuation_token: Option<String>, start_after: Option<String>, max_keys: Option<usize>, }, GetBucketLocation, PresignGet { expiry_secs: u32, }, PresignPut { expiry_secs: u32, custom_headers: Option<HeaderMap> }, InitiateMultipartUpload, UploadPart { part_number: u32, content: &'a [u8], upload_id: &'a str, }, AbortMultipartUpload { upload_id: &'a str, }, CompleteMultipartUpload { upload_id: &'a str, data: CompleteMultipartUploadData, }, } impl<'a> Command<'a> { pub fn http_verb(&self) -> Method { match *self { Command::GetObject | Command::ListBucket { .. } | Command::GetBucketLocation | Command::GetObjectTagging | Command::PresignGet { .. } => Method::GET, Command::PutObject { .. } | Command::PutObjectTagging { .. } | Command::PresignPut { .. } | Command::UploadPart { .. } => Method::PUT, Command::DeleteObject | Command::DeleteObjectTagging | Command::AbortMultipartUpload { .. } => Method::DELETE, Command::InitiateMultipartUpload | Command::CompleteMultipartUpload { .. } => { Method::POST } } } }