[feat] auto creation of uploads directory

This commit is contained in:
wfrsk 2022-09-14 18:49:00 +02:00
parent 9c88f68b08
commit c8644c7b12
No known key found for this signature in database
GPG Key ID: AA575FDE30E13CC6
3 changed files with 18 additions and 5 deletions

2
Cargo.lock generated
View File

@ -1176,6 +1176,7 @@ dependencies = [
"mio", "mio",
"num_cpus", "num_cpus",
"once_cell", "once_cell",
"parking_lot",
"pin-project-lite", "pin-project-lite",
"signal-hook-registry", "signal-hook-registry",
"socket2", "socket2",
@ -1390,6 +1391,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"rocket", "rocket",
"serde", "serde",
"tokio",
"uuid", "uuid",
] ]

View File

@ -6,13 +6,20 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
rocket = { version = "0.5.0-rc.2", features = ["serde_json", "json"] }
serde = "1.0.144" serde = "1.0.144"
[dependencies.rocket]
version = "0.5.0-rc.2"
features = ["serde_json", "json"]
[dependencies.tokio]
version = "1.21.1"
features = ["full"]
[dependencies.uuid] [dependencies.uuid]
version = "1.1.2" version = "1.1.2"
features = [ features = [
"v5", # Lets you generate random UUIDs "v5", # Lets you generate random UUIDs
"fast-rng", # Use a faster (but still sufficiently random) RNG "fast-rng", # Use a faster (but still sufficiently random) RNG
"macro-diagnostics", # Enable better diagnostics for compile-time UUIDs "macro-diagnostics", # Enable better diagnostics for compile-time UUIDs
] ]

View File

@ -10,9 +10,10 @@ use rocket::{
request::{FromRequest, Outcome}, request::{FromRequest, Outcome},
serde::json::Json, serde::json::Json,
serde::*, serde::*,
tokio::{fs::File, io::AsyncWriteExt},
*, *,
}; };
use tokio::fs::File;
use tokio::io::AsyncWriteExt;
use uuid::Uuid; use uuid::Uuid;
#[derive(Default)] #[derive(Default)]
@ -162,6 +163,9 @@ fn not_found() -> Json<UploadResponse> {
#[launch] #[launch]
pub fn rocket() -> _ { pub fn rocket() -> _ {
let current_dir = std::env::current_dir().unwrap();
std::fs::create_dir(current_dir.join(relative!("images")))
.ok();
rocket::custom( rocket::custom(
Figment::from(rocket::Config::default()) Figment::from(rocket::Config::default())
.merge(Serialized::defaults(Config::default())) .merge(Serialized::defaults(Config::default()))
@ -174,7 +178,6 @@ pub fn rocket() -> _ {
.attach(AdHoc::config::<UploaderConfiguration>()) .attach(AdHoc::config::<UploaderConfiguration>())
} }
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use crate::*; use crate::*;
@ -202,7 +205,8 @@ mod test {
let response_body = response.into_json::<UploadResponse>().unwrap(); let response_body = response.into_json::<UploadResponse>().unwrap();
assert_eq!(response_body.successful, true); assert_eq!(response_body.successful, true);
assert!(response_body.file_id.is_some()); assert!(response_body.file_id.is_some());
let response = request!(client, get, format!( "/{}", response_body.file_id.unwrap() )).dispatch(); let response =
request!(client, get, format!("/{}", response_body.file_id.unwrap())).dispatch();
assert_eq!(response.into_bytes().unwrap().as_slice(), [0u8; 1024]); assert_eq!(response.into_bytes().unwrap().as_slice(), [0u8; 1024]);
} }
} }