diff options
author | 2019-01-26 22:06:51 -0800 | |
---|---|---|
committer | 2019-02-20 16:18:23 +0100 | |
commit | bf9e7cc049d7a16cdd3718df82870bf5cc4809b9 (patch) | |
tree | 329ca6bdd89fa2cb81bba4e6be5789a199043727 /askama | |
parent | 9aa40569b4a2dc76474d3e4d220afc12b065b511 (diff) | |
download | askama-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.rs | 15 |
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")] |