diff options
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/static.rs | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/modules/static.rs b/src/modules/static.rs index d2535df..c451d76 100644 --- a/src/modules/static.rs +++ b/src/modules/static.rs @@ -16,7 +16,37 @@ // Copyright (C) 2022-2022 Fuwn <[email protected]> // SPDX-License-Identifier: GPL-3.0-only -use crate::batch_mount; +macro_rules! batch_mount { + ("pages", $router:ident, $(($path:literal, $description:literal, $file:literal)),* $(,)?) => { + $( + (*$crate::route::ROUTES.lock().unwrap()) + .insert($path.to_string(), $crate::route::Route::new($description)); + + ($router).mount($path, |context: ::windmark::context::RouteContext| { + let content = + include_str!(concat!("../../content/static/", $file, ".gmi")); + + $crate::route::cache(&context, &content); + $crate::response::success(&content, &context) + }); + )* + }; + ("files", $router:ident, $(($path:literal, $description:literal, $file:literal)),* $(,)?) => { + $( + (*$crate::route::ROUTES.lock().unwrap()) + .insert($path.to_string(), $crate::route::Route::new($description)); + + ($router).mount( + $path, + ::windmark::binary_success_auto!(include_bytes!(concat!( + "../../content/meta/", + $file + ))), + ); + )* + }; +} + pub fn module(router: &mut windmark::Router) { batch_mount!( |