use serde::Serialize;
#[derive(Debug, Clone)]
pub enum MediaData {
Base64(String),
Url(String),
Path(String),
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct StoreMediaParams {
pub filename: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delete_existing: Option<bool>,
}
impl StoreMediaParams {
pub fn from_base64(filename: impl Into<String>, data: impl Into<String>) -> Self {
Self {
filename: filename.into(),
data: Some(data.into()),
url: None,
path: None,
delete_existing: None,
}
}
pub fn from_url(filename: impl Into<String>, url: impl Into<String>) -> Self {
Self {
filename: filename.into(),
data: None,
url: Some(url.into()),
path: None,
delete_existing: None,
}
}
pub fn from_path(filename: impl Into<String>, path: impl Into<String>) -> Self {
Self {
filename: filename.into(),
data: None,
url: None,
path: Some(path.into()),
delete_existing: None,
}
}
pub fn delete_existing(mut self, delete: bool) -> Self {
self.delete_existing = Some(delete);
self
}
}