summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorJakob L. Kreuze <zerodaysfordays@sdf.org>2020-05-25 19:07:31 -0400
committerJakob L. Kreuze <zerodaysfordays@sdf.org>2020-05-25 19:07:31 -0400
commit63ca9b9bde494f4857589b9dea03d93f981c5d45 (patch)
treefe384847c495bc9be0d2f428731062c39dcd4e25 /src/main.rs
parent899f517859fe2d2981ec5214892c1af966358c6a (diff)
Implement `put_posts`.
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs20
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();
}