diff options
author | Vika <vika@fireburn.ru> | 2022-07-21 13:03:37 +0300 |
---|---|---|
committer | Vika <vika@fireburn.ru> | 2022-07-21 13:03:37 +0300 |
commit | ecdb6c7db16406a20b56e7bb6e73d4c59ee246f1 (patch) | |
tree | e7ca0e8183ddb3dbcade87914c81aeb019389f52 /kittybox-rs/src/media/storage/mod.rs | |
parent | 2dcd143a9855370da65d76e1d7ba2b93b61f8b9f (diff) | |
download | kittybox-ecdb6c7db16406a20b56e7bb6e73d4c59ee246f1.tar.zst |
media: improve Metadata typing
content_type is now optional; if not specified, it will remain empty. `application/octet-stream` will be put on read in the frontend. Length is now represented as NonZeroUsize - why would you upload a zero-byte file when you can just conjure one from the void whenever you need one? This should save me a little bit of memory. Representing content_type as a typed MIME value would be the next logical step.
Diffstat (limited to 'kittybox-rs/src/media/storage/mod.rs')
-rw-r--r-- | kittybox-rs/src/media/storage/mod.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/kittybox-rs/src/media/storage/mod.rs b/kittybox-rs/src/media/storage/mod.rs index 5614437..b34da88 100644 --- a/kittybox-rs/src/media/storage/mod.rs +++ b/kittybox-rs/src/media/storage/mod.rs @@ -5,22 +5,24 @@ use bytes::Bytes; use serde::{Deserialize, Serialize}; use std::pin::Pin; use std::fmt::Debug; +use std::num::NonZeroUsize; pub mod file; #[derive(Debug, Deserialize, Serialize)] pub struct Metadata { - pub(super) content_type: String, - pub(super) filename: Option<String>, - pub(super) length: Option<usize> + /// Content type of the file. If None, the content-type is considered undefined. + pub content_type: Option<String>, + /// The original filename that was passed. + pub filename: Option<String>, + /// The recorded length of the file. + pub length: Option<NonZeroUsize>, } impl From<&Field<'_>> for Metadata { fn from(field: &Field<'_>) -> Self { Self { content_type: field.content_type() - .map(|i| i.to_owned()) - .or_else(|| Some("application/octet-stream".to_owned())) - .unwrap(), + .map(|i| i.to_owned()), filename: field.file_name() .map(|i| i.to_owned()), length: None |