mirror of
https://github.com/actix/examples
synced 2024-11-27 16:02:57 +01:00
Update template-engines/tinytemplate to v4 (#501)
This commit is contained in:
parent
f9b0dde4c8
commit
9c620d1943
5
Cargo.lock
generated
5
Cargo.lock
generated
@ -5806,9 +5806,8 @@ dependencies = [
|
|||||||
name = "template-tinytemplate"
|
name = "template-tinytemplate"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"actix-http 2.2.2",
|
"actix-web 4.0.0-beta.21",
|
||||||
"actix-web 3.3.3",
|
"env_logger 0.9.0",
|
||||||
"env_logger 0.8.4",
|
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"tinytemplate",
|
"tinytemplate",
|
||||||
]
|
]
|
||||||
|
@ -4,8 +4,7 @@ version = "1.0.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
env_logger = "0.8"
|
env_logger = "0.9.0"
|
||||||
tinytemplate = "1.1"
|
tinytemplate = "1.1"
|
||||||
actix-http = "2"
|
actix-web = "4.0.0-beta.21"
|
||||||
actix-web = "3"
|
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use actix_http::{body::Body, Response};
|
use actix_web::body::BoxBody;
|
||||||
use actix_web::dev::ServiceResponse;
|
use actix_web::dev::ServiceResponse;
|
||||||
|
use actix_web::http::header::ContentType;
|
||||||
use actix_web::http::StatusCode;
|
use actix_web::http::StatusCode;
|
||||||
use actix_web::middleware::errhandlers::{ErrorHandlerResponse, ErrorHandlers};
|
use actix_web::middleware::{ErrorHandlerResponse, ErrorHandlers};
|
||||||
use actix_web::{error, middleware, web, App, Error, HttpResponse, HttpServer, Result};
|
use actix_web::{error, middleware, web, App, Error, HttpResponse, HttpServer, Result};
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
use tinytemplate::TinyTemplate;
|
use tinytemplate::TinyTemplate;
|
||||||
@ -40,7 +41,7 @@ async fn main() -> std::io::Result<()> {
|
|||||||
tt.add_template("error.html", ERROR).unwrap();
|
tt.add_template("error.html", ERROR).unwrap();
|
||||||
|
|
||||||
App::new()
|
App::new()
|
||||||
.data(tt)
|
.app_data(web::Data::new(tt))
|
||||||
.wrap(middleware::Logger::default()) // enable logger
|
.wrap(middleware::Logger::default()) // enable logger
|
||||||
.service(web::resource("/").route(web::get().to(index)))
|
.service(web::resource("/").route(web::get().to(index)))
|
||||||
.service(web::scope("").wrap(error_handlers()))
|
.service(web::scope("").wrap(error_handlers()))
|
||||||
@ -51,27 +52,28 @@ async fn main() -> std::io::Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Custom error handlers, to return HTML responses when an error occurs.
|
// Custom error handlers, to return HTML responses when an error occurs.
|
||||||
fn error_handlers() -> ErrorHandlers<Body> {
|
fn error_handlers() -> ErrorHandlers<BoxBody> {
|
||||||
ErrorHandlers::new().handler(StatusCode::NOT_FOUND, not_found)
|
ErrorHandlers::new().handler(StatusCode::NOT_FOUND, not_found)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Error handler for a 404 Page not found error.
|
// Error handler for a 404 Page not found error.
|
||||||
fn not_found<B>(res: ServiceResponse<B>) -> Result<ErrorHandlerResponse<B>> {
|
fn not_found<B>(res: ServiceResponse<B>) -> Result<ErrorHandlerResponse<BoxBody>> {
|
||||||
let response = get_error_response(&res, "Page not found");
|
let response = get_error_response(&res, "Page not found");
|
||||||
Ok(ErrorHandlerResponse::Response(
|
Ok(ErrorHandlerResponse::Response(ServiceResponse::new(
|
||||||
res.into_response(response.into_body()),
|
res.into_parts().0,
|
||||||
))
|
response.map_into_left_body(),
|
||||||
|
)))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generic error handler.
|
// Generic error handler.
|
||||||
fn get_error_response<B>(res: &ServiceResponse<B>, error: &str) -> Response<Body> {
|
fn get_error_response<B>(res: &ServiceResponse<B>, error: &str) -> HttpResponse {
|
||||||
let request = res.request();
|
let request = res.request();
|
||||||
|
|
||||||
// Provide a fallback to a simple plain text response in case an error occurs during the
|
// Provide a fallback to a simple plain text response in case an error occurs during the
|
||||||
// rendering of the error page.
|
// rendering of the error page.
|
||||||
let fallback = |e: &str| {
|
let fallback = |e: &str| {
|
||||||
Response::build(res.status())
|
HttpResponse::build(res.status())
|
||||||
.content_type("text/plain")
|
.content_type(ContentType::plaintext())
|
||||||
.body(e.to_string())
|
.body(e.to_string())
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -86,8 +88,8 @@ fn get_error_response<B>(res: &ServiceResponse<B>, error: &str) -> Response<Body
|
|||||||
let body = tt.render("error.html", &context);
|
let body = tt.render("error.html", &context);
|
||||||
|
|
||||||
match body {
|
match body {
|
||||||
Ok(body) => Response::build(res.status())
|
Ok(body) => HttpResponse::build(res.status())
|
||||||
.content_type("text/html")
|
.content_type(ContentType::html())
|
||||||
.body(body),
|
.body(body),
|
||||||
Err(_) => fallback(error),
|
Err(_) => fallback(error),
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user