use std::fmt;
use serde::Deserialize;
use serde::Serialize;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct TopicProperty {
pub storage: StorageProperty,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "scheme")]
#[serde(deny_unknown_fields)]
pub enum StorageProperty {
#[serde(rename = "s3")]
S3(S3StorageProperty),
}
#[derive(Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct S3StorageProperty {
pub bucket: String,
pub region: String,
#[serde(default = "default_prefix")]
pub prefix: String,
pub endpoint: String,
pub access_key_id: String,
pub secret_access_key: String,
#[serde(default = "default_virtual_host_style")]
pub virtual_host_style: bool,
}
impl fmt::Debug for S3StorageProperty {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("S3Config")
.field("prefix", &self.prefix)
.field("bucket", &self.bucket)
.field("endpoint", &self.endpoint)
.field("region", &self.region)
.finish_non_exhaustive()
}
}
pub fn default_prefix() -> String {
"/".to_string()
}
pub const fn default_virtual_host_style() -> bool {
true
}