[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",
"num_cpus",
"once_cell",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
"socket2",
@ -1390,6 +1391,7 @@ version = "0.1.0"
dependencies = [
"rocket",
"serde",
"tokio",
"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
[dependencies]
rocket = { version = "0.5.0-rc.2", features = ["serde_json", "json"] }
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]
version = "1.1.2"
features = [
"v5", # Lets you generate random UUIDs
"fast-rng", # Use a faster (but still sufficiently random) RNG
"macro-diagnostics", # Enable better diagnostics for compile-time UUIDs
]
]

View File

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