use crate::oss;
use serde::{Deserialize, Serialize};
use std::fmt;
pub mod acceleration;
pub mod acl;
pub mod bucket;
pub mod cname;
pub mod cors;
pub mod encryption;
pub mod lifecycle;
pub mod log;
pub mod multi_upload;
pub mod object;
pub mod referer;
pub mod region;
pub mod style;
pub mod tag;
pub mod version;
pub mod website;
pub mod worm;
pub enum Directive {
COPY,
REPLACE,
}
impl fmt::Display for Directive {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
match self {
Self::COPY => "COPY",
Self::REPLACE => "REPLACE",
}
)
}
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub enum Status {
Enabled,
#[default]
Disabled,
}
impl fmt::Display for Status {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let desc = match self {
Self::Enabled => "Enabled",
Self::Disabled => "Disabled",
};
write!(f, "{}", desc)
}
}
#[derive(Debug, Serialize, Deserialize, Default, Clone)]
#[serde(tag = "DataRedundancyType")]
pub enum DataRedundancyType {
#[default]
LRS,
ZRS,
}
#[derive(Debug, Default, Clone, Copy)]
pub enum OssAcl {
PublicReadWrite,
#[default]
PublicRead,
Private,
}
impl fmt::Display for OssAcl {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let desc = match self {
Self::PublicRead => "public-read",
Self::PublicReadWrite => "public-read-write",
Self::Private => "private",
};
write!(f, "{}", desc)
}
}
#[derive(Debug, Serialize, Deserialize, Default, Clone)]
pub enum ObjectACL {
#[default]
Default,
PublicReadWrite,
PublicRead,
Private,
}
impl fmt::Display for ObjectACL {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let value = match self {
Self::Default => "default",
Self::PublicReadWrite => "public-read-write",
Self::PublicRead => "public-read",
Self::Private => "private",
};
write!(f, "{}", value)
}
}
#[derive(Debug, Serialize, Deserialize, Default, Clone)]
pub enum StorageClass {
#[default]
Standard,
IA,
Archive,
ColdArchive,
DeepColdArchive,
}
impl fmt::Display for StorageClass {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
match self {
Self::Standard => "Standard",
Self::IA => "IA",
Self::Archive => "Archive",
Self::ColdArchive => "ColdArchive",
Self::DeepColdArchive => "DeepColdArchive",
}
)
}
}
#[derive(Debug, Serialize, Deserialize, Default, Clone)]
pub enum ServerSideEncryption {
#[default]
AES256,
KMS,
SM4,
}
impl fmt::Display for ServerSideEncryption {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
match self {
Self::AES256 => "AES256",
Self::KMS => "KMS",
Self::SM4 => "SM$",
}
)
}
}