From 1e525e3c05a6c9d9f0513f9bbd37d1b4d4190023 Mon Sep 17 00:00:00 2001 From: shockrah Date: Sun, 10 Nov 2019 22:28:13 -0800 Subject: [PATCH] more specific macro rules for html css and js in router --- website/src/main.rs | 47 +++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/website/src/main.rs b/website/src/main.rs index 0aca03b..ba04064 100644 --- a/website/src/main.rs +++ b/website/src/main.rs @@ -27,10 +27,19 @@ struct PageAttrs { brand_quip: &'static str } -macro_rules! page { - ($type:expr, $item:expr) => { - // TODO: verify against directory traversals - NamedFile::open(format!("static/{}/{}.{}", $type, $item, $type)) +macro_rules! html { + ($page:expr) => { + NamedFile::open(format!("static/html/{}", $page)) + } +} +macro_rules! css { + ($style:expr) => { + NamedFile::open(format!("static/css/{}", $style)) + } +} +macro_rules! js { + ($js:expr) => { + NamedFile::open(format!("static/js/{}", $js)) } } @@ -51,36 +60,46 @@ fn homepage() -> Template { favicon: "https://images.pexels.com/photos/146071/pexels-photo-146071.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260", brand_url: "freechat.io", brand_motto: "Freedom respecting chat platform", - brand_quip: "asdf", + brand_quip: "Join an realm", }; Template::render("index", &context) } // Handles logging in a user to their home instance #[get("/login")] fn login_page() -> io::Result { - page!("html", "login") + html!("login") } #[get("/servers")] -fn server_info() -> io::Result { - page!("html", "servers") +fn server_info() -> Template { + let context = PageAttrs{ + og_title: "title", + og_type: "title", + og_image: "asdf", + og_desc: "title", + og_url: "title", + favicon: "title", + brand_url: "title", + brand_motto: "title", + brand_quip: "title", + }; + Template::render("servers", &context) } -// Genearl resources +// General resources #[get("/static/css/")] fn static_css(stylesheet: String) -> io::Result { - page!("css", stylesheet) + println!("{}", stylesheet); + css!(stylesheet) } #[get("/static/js/")] fn static_js(javascript: String) -> io::Result { - page!("js", javascript) + js!(javascript) } fn main() { rocket::ignite() .mount("/", routes![ - homepage, login_page, server_info - ]) - .mount("/static", routes![ + homepage, login_page, server_info, static_css, static_js ]) .attach(Template::fairing())