From bd8d2f334ed2a9fd0fb1bb6f9d87b4ab45556918 Mon Sep 17 00:00:00 2001
From: René Kijewski <kijewski@library.vetmed.fu-berlin.de>
Date: Wed, 20 Jul 2022 21:18:18 +0200
Subject: Implement basic hyper integration

The integration is based on askama_gotham.

There is no specific trait to convert an arbitrary T to
`hyper::Response`, so I used `From<Template> for hyper::Response`.
---
 askama_hyper/src/lib.rs | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 askama_hyper/src/lib.rs

(limited to 'askama_hyper/src')

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(),
+    }
+}
-- 
cgit