#[derive(Debug, Clone, PartialEq, Eq)]
pub struct FileUpload {
pub placeholder: String,
pub filename: String,
pub data: Vec<u8>,
pub mime: Option<String>,
}
impl FileUpload {
pub fn new(placeholder: impl Into<String>, filename: impl Into<String>, data: Vec<u8>) -> Self {
Self {
placeholder: placeholder.into(),
filename: filename.into(),
data,
mime: None,
}
}
pub fn with_mime(mut self, mime: impl Into<String>) -> Self {
self.mime = Some(mime.into());
self
}
}
impl FileUpload {
pub(crate) fn into_owned_tuple(self) -> (String, String, Vec<u8>, Option<String>) {
(self.placeholder, self.filename, self.data, self.mime)
}
}
pub(crate) fn uploads_to_owned(
files: Option<Vec<FileUpload>>,
) -> Option<Vec<(String, String, Vec<u8>, Option<String>)>> {
files.map(|items| items.into_iter().map(FileUpload::into_owned_tuple).collect())
}