Return 404 for 404 page
Some checks failed
CI / Check typos (push) Successful in 8s
CI / Check links (push) Failing after 13s
CI / Clippy (push) Successful in 54s
CI / Build and test (push) Successful in 1m20s
CI / Build container (push) Has been skipped
CI / Deploy on waypoint (push) Has been skipped
Some checks failed
CI / Check typos (push) Successful in 8s
CI / Check links (push) Failing after 13s
CI / Clippy (push) Successful in 54s
CI / Build and test (push) Successful in 1m20s
CI / Build container (push) Has been skipped
CI / Deploy on waypoint (push) Has been skipped
This commit is contained in:
@@ -87,6 +87,8 @@ pub struct Page {
|
|||||||
&'a RequestContext,
|
&'a RequestContext,
|
||||||
) -> Pin<Box<dyn Future<Output = Markup> + 'a + Send + Sync>>,
|
) -> Pin<Box<dyn Future<Output = Markup> + 'a + Send + Sync>>,
|
||||||
>,
|
>,
|
||||||
|
|
||||||
|
pub response_code: StatusCode,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Page {
|
impl Default for Page {
|
||||||
@@ -96,6 +98,7 @@ impl Default for Page {
|
|||||||
html_ttl: Some(TimeDelta::days(1)),
|
html_ttl: Some(TimeDelta::days(1)),
|
||||||
generate_html: Box::new(|_, _| Box::pin(async { html!() })),
|
generate_html: Box::new(|_, _| Box::pin(async { html!() })),
|
||||||
immutable: true,
|
immutable: true,
|
||||||
|
response_code: StatusCode::OK,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -115,7 +118,7 @@ impl Servable for Page {
|
|||||||
let html = self.generate_html(ctx).await;
|
let html = self.generate_html(ctx).await;
|
||||||
|
|
||||||
return Rendered {
|
return Rendered {
|
||||||
code: StatusCode::OK,
|
code: self.response_code,
|
||||||
body: RenderedBody::Markup(html),
|
body: RenderedBody::Markup(html),
|
||||||
ttl: self.html_ttl,
|
ttl: self.html_ttl,
|
||||||
immutable: self.immutable,
|
immutable: self.immutable,
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ use chrono::{DateTime, TimeDelta, Utc};
|
|||||||
use maud::{Markup, PreEscaped, html};
|
use maud::{Markup, PreEscaped, html};
|
||||||
use page::{DeviceType, RequestContext, page::Page};
|
use page::{DeviceType, RequestContext, page::Page};
|
||||||
use parking_lot::Mutex;
|
use parking_lot::Mutex;
|
||||||
|
use reqwest::StatusCode;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use tracing::{debug, warn};
|
use tracing::{debug, warn};
|
||||||
|
|
||||||
@@ -201,6 +202,7 @@ pub fn handouts() -> Page {
|
|||||||
meta,
|
meta,
|
||||||
html_ttl: Some(TimeDelta::seconds(300)),
|
html_ttl: Some(TimeDelta::seconds(300)),
|
||||||
immutable: false,
|
immutable: false,
|
||||||
|
response_code: StatusCode::OK,
|
||||||
|
|
||||||
generate_html: Box::new(move |page, ctx| {
|
generate_html: Box::new(move |page, ctx| {
|
||||||
let html = html.clone(); // TODO: find a way to not clone here
|
let html = html.clone(); // TODO: find a way to not clone here
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
use chrono::TimeDelta;
|
use chrono::TimeDelta;
|
||||||
use maud::{DOCTYPE, Markup, PreEscaped, html};
|
use maud::{DOCTYPE, Markup, PreEscaped, html};
|
||||||
use page::page::{Page, PageMetadata};
|
use page::page::{Page, PageMetadata};
|
||||||
|
use reqwest::StatusCode;
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
|
|
||||||
use crate::components::{
|
use crate::components::{
|
||||||
@@ -69,6 +70,7 @@ fn page_from_markdown(md: impl Into<String>, default_image: Option<String>) -> P
|
|||||||
Page {
|
Page {
|
||||||
meta,
|
meta,
|
||||||
immutable: true,
|
immutable: true,
|
||||||
|
response_code: StatusCode::OK,
|
||||||
|
|
||||||
html_ttl: Some(TimeDelta::days(1)),
|
html_ttl: Some(TimeDelta::days(1)),
|
||||||
generate_html: Box::new(move |page, ctx| {
|
generate_html: Box::new(move |page, ctx| {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use maud::html;
|
use maud::html;
|
||||||
use page::page::{Page, PageMetadata};
|
use page::page::{Page, PageMetadata};
|
||||||
|
use reqwest::StatusCode;
|
||||||
|
|
||||||
use crate::pages::page_wrapper;
|
use crate::pages::page_wrapper;
|
||||||
|
|
||||||
@@ -13,6 +14,7 @@ pub fn notfound() -> Page {
|
|||||||
backlinks: Some(false),
|
backlinks: Some(false),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
response_code: StatusCode::NOT_FOUND,
|
||||||
generate_html: Box::new(move |page, _ctx| {
|
generate_html: Box::new(move |page, _ctx| {
|
||||||
Box::pin(async {
|
Box::pin(async {
|
||||||
let inner = html! {
|
let inner = html! {
|
||||||
|
|||||||
Reference in New Issue
Block a user