aboutsummaryrefslogtreecommitdiffstats
path: root/askama
diff options
context:
space:
mode:
authorLibravatar Zizheng Tai <zizheng.tai@gmail.com>2019-01-26 22:06:51 -0800
committerLibravatar Dirkjan Ochtman <dirkjan@ochtman.nl>2019-02-20 16:18:23 +0100
commitbf9e7cc049d7a16cdd3718df82870bf5cc4809b9 (patch)
tree329ca6bdd89fa2cb81bba4e6be5789a199043727 /askama
parent9aa40569b4a2dc76474d3e4d220afc12b065b511 (diff)
downloadaskama-bf9e7cc049d7a16cdd3718df82870bf5cc4809b9.tar.gz
askama-bf9e7cc049d7a16cdd3718df82870bf5cc4809b9.tar.bz2
askama-bf9e7cc049d7a16cdd3718df82870bf5cc4809b9.zip
Add TemplateResponder trait for integration with actix-web
Diffstat (limited to '')
-rw-r--r--askama/src/lib.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/askama/src/lib.rs b/askama/src/lib.rs
index a0d641b..1d66feb 100644
--- a/askama/src/lib.rs
+++ b/askama/src/lib.rs
@@ -492,6 +492,21 @@ pub mod actix_web {
let ctype = get_mime_type(ext).to_string();
Ok(HttpResponse::Ok().content_type(ctype.as_str()).body(rsp))
}
+
+ pub trait TemplateResponder {
+ fn responder(&self) -> Result<HttpResponse, Error>;
+ }
+
+ impl<T: super::Template> TemplateResponder for T {
+ fn responder(&self) -> Result<HttpResponse, Error> {
+ let rsp = self
+ .render()
+ .map_err(|_| ErrorInternalServerError("Template render error"))?;
+ let ext = T::extension().unwrap_or("");
+ let ctype = get_mime_type(ext).to_string();
+ Ok(HttpResponse::Ok().content_type(ctype.as_str()).body(rsp))
+ }
+ }
}
#[cfg(feature = "with-gotham")]