about summary refs log tree commit diff
path: root/kittybox-rs/src/media/storage/mod.rs
diff options
context:
space:
mode:
authorVika <vika@fireburn.ru>2022-07-21 13:03:37 +0300
committerVika <vika@fireburn.ru>2022-07-21 13:03:37 +0300
commitecdb6c7db16406a20b56e7bb6e73d4c59ee246f1 (patch)
treee7ca0e8183ddb3dbcade87914c81aeb019389f52 /kittybox-rs/src/media/storage/mod.rs
parent2dcd143a9855370da65d76e1d7ba2b93b61f8b9f (diff)
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.rs14
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