aboutsummaryrefslogtreecommitdiffstats
path: root/askama_hyper/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'askama_hyper/src/lib.rs')
-rw-r--r--askama_hyper/src/lib.rs29
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(),
+ }
+}