diff options
| author | Fuwn <[email protected]> | 2023-04-16 21:15:12 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-04-16 21:15:12 -0700 |
| commit | c7adc5f014d4635c8468a863a124ddce4a9fe0e7 (patch) | |
| tree | 2f5a8aafdbf3fa0712d01ecb95ccd10eb691fd10 /src/response.rs | |
| parent | fix(amenadiel): modules macro unwrap on none (diff) | |
| download | locus-c7adc5f014d4635c8468a863a124ddce4a9fe0e7.tar.xz locus-c7adc5f014d4635c8468a863a124ddce4a9fe0e7.zip | |
refactor(response): rewrite unnecessary macro to function
Diffstat (limited to 'src/response.rs')
| -rw-r--r-- | src/response.rs | 54 |
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; + + "ES.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(), + ) +} |