summaryrefslogtreecommitdiff
path: root/src/handlers
diff options
context:
space:
mode:
authorWriterV2 <primary-v2@protonmail.com>2024-11-05 16:33:19 +0100
committerWriterV2 <primary-v2@protonmail.com>2024-11-05 16:33:19 +0100
commitdab09c4e4d1e4b21216b630bb44e57f597dfe85b (patch)
tree5c01c51c49ba4b64b03ffe9ca65c1d0ac5cd1eef /src/handlers
parent56233352feb78ec6da39d8ab7734102abae1e4ed (diff)
Feat: auto file (pdf + epub) creation and synchronization for story
Diffstat (limited to 'src/handlers')
-rw-r--r--src/handlers/admin.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/handlers/admin.rs b/src/handlers/admin.rs
index af7aa42..6cfe133 100644
--- a/src/handlers/admin.rs
+++ b/src/handlers/admin.rs
@@ -1,4 +1,5 @@
use std::collections::HashMap;
+use std::io::{BufWriter, Write};
use anyhow::Context;
use axum::body::Bytes;
@@ -94,12 +95,22 @@ pub async fn upload_story(
};
let pdf = if let Some(pdf_value) = form.get("pdf") {
+ let mut filename = format!("{}.pdf", name).to_lowercase();
+ filename.retain(|c| !c.is_whitespace());
+
+ let file = std::fs::File::create_new(format!("static/{}", filename))?;
+ BufWriter::new(file).write_all(pdf_value)?;
pdf_value.to_vec()
} else {
return Ok(StatusCode::BAD_REQUEST.into_response());
};
let epub = if let Some(epub_value) = form.get("epub") {
+ let mut filename = format!("{}.epub", name).to_lowercase();
+ filename.retain(|c| !c.is_whitespace());
+
+ let file = std::fs::File::create_new(format!("static/{}", filename))?;
+ BufWriter::new(file).write_all(epub_value)?;
epub_value.to_vec()
} else {
return Ok(StatusCode::BAD_REQUEST.into_response());