aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-06-15 02:33:02 -0700
committerFuwn <[email protected]>2022-06-15 02:33:02 -0700
commit500ebe9ce62ab4e2c18c520b905d194cf411b8d8 (patch)
tree6888fbf94c886ad4710ec758ccbd5e8f8263f2a2 /src/modules
parentfix(skills): remove unused unused (diff)
downloadlocus-500ebe9ce62ab4e2c18c520b905d194cf411b8d8.tar.xz
locus-500ebe9ce62ab4e2c18c520b905d194cf411b8d8.zip
feat(contact): move contact to json
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/contact.rs55
-rw-r--r--src/modules/mod.rs3
-rw-r--r--src/modules/static.rs2
3 files changed, 57 insertions, 3 deletions
diff --git a/src/modules/contact.rs b/src/modules/contact.rs
new file mode 100644
index 0000000..9999aa9
--- /dev/null
+++ b/src/modules/contact.rs
@@ -0,0 +1,55 @@
+// 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 std::{collections::HashMap, lazy::SyncLazy};
+
+type ContactMap = HashMap<String, HashMap<String, String>>;
+
+static CONTACT_MAP: SyncLazy<ContactMap> = SyncLazy::new(|| {
+ serde_json::from_str(include_str!("../../content/json/contacts.json"))
+ .unwrap()
+});
+
+pub fn module(router: &mut windmark::Router) {
+ let mut contacts = CONTACT_MAP
+ .iter()
+ .map(|(category, contacts)| {
+ format!("## {}\n\n{}", category, {
+ let mut contacts = contacts
+ .iter()
+ .map(|(tag, href)| format!("=> {} {}", href, tag))
+ .collect::<Vec<_>>();
+
+ contacts.sort();
+
+ contacts.join("\n")
+ })
+ })
+ .collect::<Vec<_>>();
+
+ contacts.sort();
+
+ crate::route::track_mount(
+ router,
+ "/contact",
+ "A Few Skills of Fuwn",
+ Box::new(move |context| {
+ crate::success!(format!("# Contact\n\n{}", contacts.join("\n")), context)
+ }),
+ );
+}
diff --git a/src/modules/mod.rs b/src/modules/mod.rs
index 36f5e78..5515a85 100644
--- a/src/modules/mod.rs
+++ b/src/modules/mod.rs
@@ -17,6 +17,7 @@
// SPDX-License-Identifier: GPL-3.0-only
mod blog;
+mod contact;
mod random;
mod remarks;
mod robots;
@@ -30,6 +31,6 @@ mod uptime;
pub fn module(router: &mut windmark::Router) {
crate::statelesses!(
router, uptime, sitemap, search, remarks, blog, random, r#static, router,
- robots, skills,
+ robots, skills, contact,
);
}
diff --git a/src/modules/static.rs b/src/modules/static.rs
index ca2f9d8..eae9fe0 100644
--- a/src/modules/static.rs
+++ b/src/modules/static.rs
@@ -29,7 +29,6 @@ pub fn module(router: &mut windmark::Router) {
"pages",
router,
("/", "This Gemini capsule's homepage", "index"),
- ("/contact", "Many ways to contact Fuwn", "contact"),
("/donate", "Many ways to donate to Fuwn", "donate"),
(
"/gemini",
@@ -42,7 +41,6 @@ pub fn module(router: &mut windmark::Router) {
"gopher"
),
("/interests", "A few interests of Fuwn", "interests"),
- // ("/skills", "A few skills of Fuwn", "skills"),
(
"/licensing",
"The licensing terms of this Gemini capsule",