// This file is part of Locus . // Copyright (C) 2022-2022 Fuwn // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, version 3. // // This program is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // Copyright (C) 2022-2022 Fuwn // SPDX-License-Identifier: GPL-3.0-only 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::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::Router) { batch_mount!( "files", router, ("/favicon.txt", "This Gemini capsule's icon", "favicon.txt"), ( "/robots.txt", "Crawler traffic manager; for robots, not humans", "robots.txt" ), ); batch_mount!( "pages", router, ("/", "This Gemini capsule's homepage", "index"), ("/gemini", "Information and resources for the Gemini protocol", "gemini"), ("/gopher", "Information and resources for the Gopher protocol", "gopher"), // ("/licensing", "The licensing terms of this Gemini capsule", // "licensing"), ("/readability", "The readability disclosure", "readability"), ("/tor", "Information and resources for The Tor Project", "tor"), ( "/stocks/telegram", "Stock Market Related Telegram Groups", "stocks_telegram" ), // ( // "/translations", // "Translate a page to your language of choice!", // "translations" // ), ( "/useful", "Useful quick links that don't fit in the \"quick links\"", "useful" ) ); }