Krolyxon
Commit 55c1225

ferreniumsrchandlerserror.rs

34 lines · 826 B · Rust

1//! Error pages.
2
3use std::sync::Arc;
4
5use askama::Template;
6use axum::extract::State;
7use axum::http::StatusCode;
8use axum::response::Response;
9
10use super::{Layout, render};
11use crate::state::AppState;
12
13#[derive(Template)]
14#[template(path = "error.html")]
15pub struct ErrorPage {
16 pub layout: Layout,
17 pub code: u16,
18 pub message: String,
19}
20
21pub fn page(state: &AppState, status: StatusCode, message: impl Into<String>) -> Response {
22 let config = state.config.load();
23 let code = status.as_u16();
24 let page = ErrorPage {
25 layout: Layout::new(state, &config, Some(&code.to_string())),
26 code,
27 message: message.into(),
28 };
29 render(status, &page)
30}
31
32pub async fn not_found(State(state): State<Arc<AppState>>) -> Response {
33 page(&state, StatusCode::NOT_FOUND, "PAGE NOT FOUND")
34}