diff --git a/backend/src/main.rs b/backend/src/main.rs index e47ec4c..36f0865 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -11,7 +11,7 @@ use std::convert::Infallible; use std::{env, fs}; use std::net::SocketAddr; use std::os::unix::fs::MetadataExt; -use std::path::Path; +use std::path::{Path, PathBuf}; use hyper::{Body, http, Request, Response, Server}; use hyper::service::{make_service_fn, service_fn}; use path_clean::{clean}; @@ -66,9 +66,20 @@ impl MyApp { Ok(MyApp { generator: Generator::new(base.into())? }) } - async fn hello_world(&self, _req: Request) -> http::Result> { - let path = format!(".{}", clean(_req.uri().path())); - println!("Raw path: {} | Sanitized path: {path}", _req.uri().path()); + async fn hello_world(&self, req: Request) -> http::Result> { + let mut path: String = url_escape::decode(req.uri().path()).into_owned(); + path = format!(".{}", clean(&*path)); + println!("Raw path: {} | Sanitized path: {path}", req.uri().path()); + + let params = req.params(); + + // Reading thumbnail of a file + if params.contains_key("thumb") { + return match self.generator.get_thumb(&PathBuf::from(path.to_owned())) { + Ok(vec) => { vec.resp(200) } + Err(e) => { e.to_string().resp(500) } + } + } // List files in directory let read_dir = match fs::read_dir(path) {