From 28c01a7fc68883cd9e9313522ac1a326be5b355d Mon Sep 17 00:00:00 2001 From: Dmitry Date: Sun, 20 Aug 2023 12:10:11 +0300 Subject: [PATCH] add 500 catcher --- src/main.rs | 13 ++++++++++++- templates/500.html.tera | 13 +++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 templates/500.html.tera diff --git a/src/main.rs b/src/main.rs index 55be2ce..abb728b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,6 +38,8 @@ impl ErrorEmpty for Result { enum WebError { #[response(status = 404)] NotFound(Template), + #[response(status = 500)] + ServerError(Template), } impl WebError { @@ -45,6 +47,10 @@ impl WebError { let context: HashMap = HashMap::new(); WebError::NotFound(Template::render("404", context)) } + fn server_error() -> Self { + let context: HashMap = HashMap::new(); + WebError::ServerError(Template::render("500", context)) + } } #[derive(Clone)] @@ -161,6 +167,11 @@ fn not_found(_req: &rocket::Request) -> WebError { WebError::not_found() } +#[catch(500)] +fn server_error(_req: &rocket::Request) -> WebError { + WebError::server_error() +} + #[launch] async fn rocket() -> _ { let state: AppState = async_db::Reader::new(DB_FILENAME) @@ -175,7 +186,7 @@ async fn rocket() -> _ { rocket::build() .manage(state) .manage(cache) - .register("/", catchers![not_found]) + .register("/", catchers![not_found, server_error]) .mount( "/", routes![index, show_question, show_answer, question0, answer0], diff --git a/templates/500.html.tera b/templates/500.html.tera new file mode 100644 index 0000000..a025485 --- /dev/null +++ b/templates/500.html.tera @@ -0,0 +1,13 @@ +{% extends "base" %} +{% block title %}404{% endblock title %} +{% block nav %} +{% endblock nav %} +{% block content %} +
+
+

500

+
+

😮 Ой, кажется у нас тут что то сломалось...

+
+
+{% endblock content %} \ No newline at end of file