aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-04-25 01:12:12 -0700
committerFuwn <[email protected]>2022-04-25 01:12:12 -0700
commited6e5a3b1b73240ba21ec12cb9bfa5cf29b7881f (patch)
tree16bead8ca5f3b59db93689ec39dc7d0aedf89faf /src
parentfeat(quotes): add a quote (diff)
downloadlocus-ed6e5a3b1b73240ba21ec12cb9bfa5cf29b7881f.tar.xz
locus-ed6e5a3b1b73240ba21ec12cb9bfa5cf29b7881f.zip
refactor(modules): move static mounts to modules
Diffstat (limited to 'src')
-rw-r--r--src/macros.rs13
-rw-r--r--src/main.rs39
-rw-r--r--src/modules/mod.rs1
-rw-r--r--src/modules/static.rs57
4 files changed, 66 insertions, 44 deletions
diff --git a/src/macros.rs b/src/macros.rs
index 025e0dc..cd964bb 100644
--- a/src/macros.rs
+++ b/src/macros.rs
@@ -56,10 +56,11 @@ macro_rules! mount_page {
($router).mount(
$at,
Box::new(|context| {
- let content = include_str!(concat!("../content/pages/", $file, ".gmi"));
+ let content =
+ include_str!(concat!("../../content/pages/", $file, ".gmi"));
$crate::route::cache(&context, &content);
- success!(content, context)
+ $crate::success!(content, context)
}),
);
};
@@ -74,8 +75,8 @@ macro_rules! mount_file {
($router).mount(
$at,
Box::new(|_| {
- Response::SuccessFile(include_bytes!(concat!(
- "../content/meta/",
+ windmark::Response::SuccessFile(include_bytes!(concat!(
+ "../../content/meta/",
$file
)))
}),
@@ -87,12 +88,12 @@ macro_rules! mount_file {
macro_rules! batch_mount {
("pages", $router:ident, $(($path:literal, $description:literal, $file:literal),)*) => {
$(
- mount_page!($router, $path, $description, $file);
+ $crate::mount_page!($router, $path, $description, $file);
)*
};
("files", $router:ident, $(($path:literal, $description:literal, $file:literal),)*) => {
$(
- mount_file!($router, $path, $description, $file);
+ $crate::mount_file!($router, $path, $description, $file);
)*
};
}
diff --git a/src/main.rs b/src/main.rs
index 6ab7086..b3820d5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -152,44 +152,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
router.attach_stateless(modules::remarks::module);
router.attach_stateless(modules::multi_blog::module);
router.attach_stateless(modules::random::module);
- });
-
- time_mounts("static", &mut time_mount, || {
- batch_mount!(
- "files",
- router,
- (
- "/robots.txt",
- "Crawler traffic manager, for robots, not humans",
- "robots.txt"
- ),
- ("/favicon.txt", "This Gemini capsule's icon", "favicon.txt"),
- );
-
- batch_mount!(
- "pages",
- router,
- ("/", "This Gemini capsule's homepage", "index"),
- ("/contact", "Many ways to contact Fuwn", "contact"),
- ("/donate", "Many ways to donate to Fuwn", "donate"),
- (
- "/gemini",
- "Information and resources for the Gemini protocol",
- "gemini"
- ),
- (
- "/gopher",
- "Information and resources for the Gopher protocol",
- "gopher"
- ),
- ("/interests", "A few interests of Fuwn", "interests"),
- ("/skills", "A few skills of Fuwn", "skills"),
- (
- "/licensing",
- "The licensing terms of this Gemini capsule",
- "licensing"
- ),
- );
+ router.attach_stateless(modules::r#static::module);
});
std::thread::spawn(search::index);
diff --git a/src/modules/mod.rs b/src/modules/mod.rs
index bb822b3..fd856ff 100644
--- a/src/modules/mod.rs
+++ b/src/modules/mod.rs
@@ -21,4 +21,5 @@ pub mod random;
pub mod remarks;
pub mod search;
pub mod sitemap;
+pub mod r#static;
pub mod uptime;
diff --git a/src/modules/static.rs b/src/modules/static.rs
new file mode 100644
index 0000000..07a7cb3
--- /dev/null
+++ b/src/modules/static.rs
@@ -0,0 +1,57 @@
+// This file is part of Locus <https://github.com/gemrest/locus>.
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+//
+// 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 <http://www.gnu.org/licenses/>.
+//
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+// SPDX-License-Identifier: GPL-3.0-only
+
+use crate::batch_mount;
+
+pub fn module(router: &mut windmark::Router) {
+ batch_mount!(
+ "files",
+ router,
+ (
+ "/robots.txt",
+ "Crawler traffic manager, for robots, not humans",
+ "robots.txt"
+ ),
+ ("/favicon.txt", "This Gemini capsule's icon", "favicon.txt"),
+ );
+
+ batch_mount!(
+ "pages",
+ router,
+ ("/", "This Gemini capsule's homepage", "index"),
+ ("/contact", "Many ways to contact Fuwn", "contact"),
+ ("/donate", "Many ways to donate to Fuwn", "donate"),
+ (
+ "/gemini",
+ "Information and resources for the Gemini protocol",
+ "gemini"
+ ),
+ (
+ "/gopher",
+ "Information and resources for the Gopher protocol",
+ "gopher"
+ ),
+ ("/interests", "A few interests of Fuwn", "interests"),
+ ("/skills", "A few skills of Fuwn", "skills"),
+ (
+ "/licensing",
+ "The licensing terms of this Gemini capsule",
+ "licensing"
+ ),
+ );
+}