diff options
| author | Jakob L. Kreuze <zerodaysfordays@sdf.org> | 2020-05-25 19:07:31 -0400 |
|---|---|---|
| committer | Jakob L. Kreuze <zerodaysfordays@sdf.org> | 2020-05-25 19:07:31 -0400 |
| commit | 63ca9b9bde494f4857589b9dea03d93f981c5d45 (patch) | |
| tree | fe384847c495bc9be0d2f428731062c39dcd4e25 /src/main.rs | |
| parent | 899f517859fe2d2981ec5214892c1af966358c6a (diff) | |
Implement `put_posts`.
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index a4f5946..4294e06 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,9 +29,9 @@ extern crate serde_derive; mod database; -use database::{Query, TagDatabase}; +use database::{hash_file, Query, TagDatabase}; use image::{GenericImageView, ImageFormat}; -use rocket::State; +use rocket::{Data, State}; use rocket_contrib::json::{Json, JsonValue}; use std::env; use std::fs; @@ -52,7 +52,7 @@ struct ImageResult { } #[get("/posts?<tags>")] -fn posts(tb: State<Mutex<TagDatabase>>, tags: String) -> Json<Vec<ImageResult>> { +fn get_posts(tb: State<Mutex<TagDatabase>>, tags: String) -> Json<Vec<ImageResult>> { let tb = tb.inner().lock().unwrap(); let tags = tags.split(",").collect::<Vec<&str>>(); @@ -75,6 +75,18 @@ fn posts(tb: State<Mutex<TagDatabase>>, tags: String) -> Json<Vec<ImageResult>> ) } +#[post("/posts/<filename>", data = "<data>")] +fn put_posts(tb: State<Mutex<TagDatabase>>, filename: String, data: Data) -> Json<&str> { + let tb = tb.inner().lock().unwrap(); + + let bin = env::current_exe().unwrap(); + let path = bin.parent().unwrap().join("image/").join(filename); + data.stream_to_file(&path).unwrap(); + tb.import_image(&path, &hash_file(&path).unwrap()).unwrap(); + + Json("uploaded!") +} + /// Maybe initialize the directory for storing image symlinks and thumbnails. fn create_image_directory() -> TagDatabase { let bin = env::current_exe().unwrap(); @@ -109,6 +121,6 @@ fn main() { let tb = create_image_directory(); rocket::ignite() .manage(Mutex::new(tb)) - .mount("/", routes![index, posts]) + .mount("/", routes![index, get_posts]) .launch(); } |