From f9b0dde4c8b75ac5dec4743c122943effa07a704 Mon Sep 17 00:00:00 2001 From: Luca Palmieri Date: Wed, 2 Feb 2022 15:18:19 +0000 Subject: [PATCH] Update template-engines/tera to v4 (#499) --- Cargo.lock | 5 ++--- template_engines/tera/Cargo.toml | 5 ++--- template_engines/tera/src/main.rs | 31 ++++++++++++++++--------------- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 40b07b8e..4ea5bdd7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5797,9 +5797,8 @@ dependencies = [ name = "template-tera" version = "1.0.0" dependencies = [ - "actix-http 2.2.2", - "actix-web 3.3.3", - "env_logger 0.8.4", + "actix-web 4.0.0-beta.21", + "env_logger 0.9.0", "tera", ] diff --git a/template_engines/tera/Cargo.toml b/template_engines/tera/Cargo.toml index cf12433c..e79f2073 100644 --- a/template_engines/tera/Cargo.toml +++ b/template_engines/tera/Cargo.toml @@ -4,7 +4,6 @@ version = "1.0.0" edition = "2021" [dependencies] -env_logger = "0.8" +env_logger = "0.9.0" tera = "1.8.0" -actix-http = "2" -actix-web = "3" +actix-web = "4.0.0-beta.21" diff --git a/template_engines/tera/src/main.rs b/template_engines/tera/src/main.rs index 14f2bfa6..55e9eea0 100644 --- a/template_engines/tera/src/main.rs +++ b/template_engines/tera/src/main.rs @@ -1,10 +1,10 @@ -use std::collections::HashMap; - -use actix_http::{body::Body, Response}; +use actix_web::body::BoxBody; use actix_web::dev::ServiceResponse; +use actix_web::http::header::ContentType; 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 std::collections::HashMap; use tera::Tera; // store tera template in application state @@ -37,7 +37,7 @@ async fn main() -> std::io::Result<()> { Tera::new(concat!(env!("CARGO_MANIFEST_DIR"), "/templates/**/*")).unwrap(); App::new() - .data(tera) + .app_data(web::Data::new(tera)) .wrap(middleware::Logger::default()) // enable logger .service(web::resource("/").route(web::get().to(index))) .service(web::scope("").wrap(error_handlers())) @@ -48,27 +48,28 @@ async fn main() -> std::io::Result<()> { } // Custom error handlers, to return HTML responses when an error occurs. -fn error_handlers() -> ErrorHandlers { +fn error_handlers() -> ErrorHandlers { ErrorHandlers::new().handler(StatusCode::NOT_FOUND, not_found) } // Error handler for a 404 Page not found error. -fn not_found(res: ServiceResponse) -> Result> { +fn not_found(res: ServiceResponse) -> Result> { let response = get_error_response(&res, "Page not found"); - Ok(ErrorHandlerResponse::Response( - res.into_response(response.into_body()), - )) + Ok(ErrorHandlerResponse::Response(ServiceResponse::new( + res.into_parts().0, + response.map_into_left_body(), + ))) } // Generic error handler. -fn get_error_response(res: &ServiceResponse, error: &str) -> Response { +fn get_error_response(res: &ServiceResponse, error: &str) -> HttpResponse { let request = res.request(); // Provide a fallback to a simple plain text response in case an error occurs during the // rendering of the error page. let fallback = |e: &str| { - Response::build(res.status()) - .content_type("text/plain") + HttpResponse::build(res.status()) + .content_type(ContentType::plaintext()) .body(e.to_string()) }; @@ -81,8 +82,8 @@ fn get_error_response(res: &ServiceResponse, error: &str) -> Response Response::build(res.status()) - .content_type("text/html") + Ok(body) => HttpResponse::build(res.status()) + .content_type(ContentType::html()) .body(body), Err(_) => fallback(error), }