diff options
Diffstat (limited to '')
-rw-r--r-- | askama_hyper/src/lib.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/askama_hyper/src/lib.rs b/askama_hyper/src/lib.rs new file mode 100644 index 0000000..07ede88 --- /dev/null +++ b/askama_hyper/src/lib.rs @@ -0,0 +1,29 @@ +#![forbid(unsafe_code)] +#![deny(elided_lifetimes_in_paths)] +#![deny(unreachable_pub)] + +pub use askama::*; +#[doc(hidden)] +pub use hyper; +use hyper::{header, Body, Response, StatusCode}; + +pub fn try_respond<T: Template>(t: &T, _ext: &str) -> Result<Response<Body>> { + Response::builder() + .status(StatusCode::OK) + .header( + header::CONTENT_TYPE, + header::HeaderValue::from_static(T::MIME_TYPE), + ) + .body(t.render()?.into()) + .map_err(|err| Error::Custom(Box::new(err))) +} + +pub fn respond<T: Template>(t: &T, _ext: &str) -> Response<Body> { + match try_respond(t, _ext) { + Ok(response) => response, + Err(_) => Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(Body::empty()) + .unwrap(), + } +} |