#[derive(Deserialize, Debug)]
pub struct InitiateMultipartUploadResponse {
#[serde(rename = "Bucket")]
bucket: String,
#[serde(rename = "Key")]
pub key: String,
#[serde(rename = "UploadId")]
pub upload_id: String,
}
#[derive(Deserialize, Debug, Clone)]
pub struct Owner {
#[serde(rename = "DisplayName")]
pub display_name: String,
#[serde(rename = "ID")]
pub id: String,
}
#[derive(Deserialize, Debug, Clone)]
pub struct Object {
#[serde(rename = "LastModified")]
pub last_modified: String,
#[serde(rename = "ETag")]
pub e_tag: String,
#[serde(rename = "StorageClass")]
pub storage_class: String,
#[serde(rename = "Key")]
pub key: String,
#[serde(rename = "Owner")]
pub owner: Option<Owner>,
#[serde(rename = "Size")]
pub size: u64,
}
#[derive(Deserialize, Debug, Clone)]
pub struct Tagging {
#[serde(rename = "TagSet")]
pub tag_set: Vec<Tag>,
}
#[derive(Deserialize, Debug, Clone)]
pub struct Tag {
#[serde(rename = "Tag")]
pub kvpair: KVPair,
}
impl Tag {
pub fn key(&self) -> String {
self.kvpair.key.clone()
}
pub fn value(&self) -> String {
self.kvpair.value.clone()
}
}
#[derive(Deserialize, Debug, Clone)]
pub struct KVPair {
#[serde(rename = "Key")]
pub key: String,
#[serde(rename = "Value")]
pub value: String,
}
use std::fmt;
impl fmt::Display for CompleteMultipartUploadData {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut parts = String::new();
for part in self.parts.clone() {
parts.push_str(&serde_xml_rs::to_string(&part).unwrap())
}
write!(
f,
"<CompleteMultipartUpload>{}</CompleteMultipartUpload>",
parts
)
}
}
impl CompleteMultipartUploadData {
pub fn len(&self) -> usize {
self.to_string().as_bytes().len()
}
pub fn is_empty(&self) -> bool {
self.to_string().as_bytes().len() == 0
}
}
#[derive(Debug, Clone)]
pub struct CompleteMultipartUploadData {
pub parts: Vec<Part>,
}
#[derive(Debug, Clone, Serialize)]
pub struct Part {
#[serde(rename = "PartNumber")]
pub part_number: u32,
#[serde(rename = "ETag")]
pub etag: String,
}
#[derive(Deserialize, Debug, Clone)]
pub struct BucketLocationResult {
#[serde(rename = "$value")]
pub region: String,
}
#[derive(Deserialize, Debug, Clone)]
pub struct ListBucketResult {
#[serde(rename = "Name")]
pub name: String,
#[serde(rename = "NextMarker")]
pub next_marker: Option<String>,
#[serde(rename = "Delimiter")]
pub delimiter: Option<String>,
#[serde(rename = "MaxKeys")]
pub max_keys: i32,
#[serde(rename = "Prefix")]
pub prefix: String,
#[serde(rename = "Marker")]
pub marker: Option<String>,
#[serde(rename = "EncodingType")]
pub encoding_type: Option<String>,
#[serde(
rename = "IsTruncated",
deserialize_with = "super::deserializer::bool_deserializer"
)]
pub is_truncated: bool,
#[serde(rename = "NextContinuationToken", default)]
pub next_continuation_token: Option<String>,
#[serde(rename = "Contents", default)]
pub contents: Vec<Object>,
#[serde(rename = "CommonPrefixes", default)]
pub common_prefixes: Option<Vec<CommonPrefix>>,
}
#[derive(Deserialize, Debug, Clone)]
pub struct CommonPrefix {
#[serde(rename = "Prefix")]
pub prefix: String,
}
#[derive(Deserialize, Debug)]
pub struct AwsError {
#[serde(rename = "Code")]
pub code: String,
#[serde(rename = "Message")]
pub message: String,
#[serde(rename = "RequestId")]
pub request_id: String,
}