aboutsummaryrefslogtreecommitdiff
path: root/src/response.rs
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-04-16 21:15:12 -0700
committerFuwn <[email protected]>2023-04-16 21:15:12 -0700
commitc7adc5f014d4635c8468a863a124ddce4a9fe0e7 (patch)
tree2f5a8aafdbf3fa0712d01ecb95ccd10eb691fd10 /src/response.rs
parentfix(amenadiel): modules macro unwrap on none (diff)
downloadlocus-c7adc5f014d4635c8468a863a124ddce4a9fe0e7.tar.xz
locus-c7adc5f014d4635c8468a863a124ddce4a9fe0e7.zip
refactor(response): rewrite unnecessary macro to function
Diffstat (limited to 'src/response.rs')
-rw-r--r--src/response.rs54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/response.rs b/src/response.rs
new file mode 100644
index 0000000..5661938
--- /dev/null
+++ b/src/response.rs
@@ -0,0 +1,54 @@
+// This file is part of Locus <https://github.com/gemrest/locus>.
+//
+// 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-2023 Fuwn <[email protected]>
+// SPDX-License-Identifier: GPL-3.0-only
+
+use once_cell::sync::Lazy;
+
+static QUOTES: Lazy<Vec<String>> = Lazy::new(|| {
+ serde_json::from_str(include_str!("../content/json/quotes.json")).unwrap()
+});
+
+#[derive(yarte::Template)]
+#[template(path = "main")]
+struct Main<'a> {
+ pub body: &'a str,
+ pub hits: &'a i32,
+ pub quote: &'a str,
+ pub commit: &'a str,
+ pub mini_commit: &'a str,
+}
+
+pub fn success(
+ body: &impl ToString,
+ context: &windmark::context::RouteContext,
+) -> windmark::Response {
+ crate::route::cache(context, &body.to_string());
+
+ windmark::Response::success(
+ Main {
+ body: &body.to_string(),
+ hits: &crate::route::hits_from(context.url.path()),
+ quote: {
+ use rand::prelude::SliceRandom;
+
+ &QUOTES.choose(&mut rand::thread_rng()).unwrap().to_string()
+ },
+ commit: &format!("/tree/{}", env!("VERGEN_GIT_SHA")),
+ mini_commit: env!("VERGEN_GIT_SHA").get(0..5).unwrap_or("UNKNOWN"),
+ }
+ .to_string(),
+ )
+}