diff --git a/src/routes/blossom.rs b/src/routes/blossom.rs index 59bfb67..a5f1fd0 100644 --- a/src/routes/blossom.rs +++ b/src/routes/blossom.rs @@ -59,7 +59,14 @@ impl BlobDescriptor { #[cfg(feature = "media-compression")] pub fn blossom_routes() -> Vec { - routes![delete_blob, upload, list_files, upload_head, upload_media] + routes![ + delete_blob, + upload, + list_files, + upload_head, + upload_media, + head_media + ] } #[cfg(not(feature = "media-compression"))] @@ -175,7 +182,42 @@ async fn list_files( } #[rocket::head("/upload")] -async fn upload_head(auth: BlossomAuth, settings: &State) -> BlossomHead { +fn upload_head(auth: BlossomAuth, settings: &State) -> BlossomHead { + check_head(auth, settings) +} + +#[rocket::put("/upload", data = "")] +async fn upload( + auth: BlossomAuth, + fs: &State, + db: &State, + settings: &State, + webhook: &State>, + data: Data<'_>, +) -> BlossomResponse { + process_upload("upload", false, auth, fs, db, settings, webhook, data).await +} + +#[cfg(feature = "media-compression")] +#[rocket::head("/media")] +fn head_media(auth: BlossomAuth, settings: &State) -> BlossomHead { + check_head(auth, settings) +} + +#[cfg(feature = "media-compression")] +#[rocket::put("/media", data = "")] +async fn upload_media( + auth: BlossomAuth, + fs: &State, + db: &State, + settings: &State, + webhook: &State>, + data: Data<'_>, +) -> BlossomResponse { + process_upload("media", true, auth, fs, db, settings, webhook, data).await +} + +fn check_head(auth: BlossomAuth, settings: &State) -> BlossomHead { if !check_method(&auth.event, "upload") { return BlossomHead { msg: Some("Invalid auth method tag"), @@ -218,31 +260,6 @@ async fn upload_head(auth: BlossomAuth, settings: &State) -> BlossomHe BlossomHead { msg: None } } -#[rocket::put("/upload", data = "")] -async fn upload( - auth: BlossomAuth, - fs: &State, - db: &State, - settings: &State, - webhook: &State>, - data: Data<'_>, -) -> BlossomResponse { - process_upload("upload", false, auth, fs, db, settings, webhook, data).await -} - -#[cfg(feature = "media-compression")] -#[rocket::put("/media", data = "")] -async fn upload_media( - auth: BlossomAuth, - fs: &State, - db: &State, - settings: &State, - webhook: &State>, - data: Data<'_>, -) -> BlossomResponse { - process_upload("media", true, auth, fs, db, settings, webhook, data).await -} - async fn process_upload( method: &str, compress: bool,