aboutsummaryrefslogtreecommitdiffstats
path: root/askama_tide/src
diff options
context:
space:
mode:
Diffstat (limited to 'askama_tide/src')
-rw-r--r--askama_tide/src/lib.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/askama_tide/src/lib.rs b/askama_tide/src/lib.rs
new file mode 100644
index 0000000..0458348
--- /dev/null
+++ b/askama_tide/src/lib.rs
@@ -0,0 +1,32 @@
+pub use askama;
+pub use tide;
+
+use askama::*;
+use tide::{http::Mime, Body, Response};
+
+pub fn try_into_body<T: Template>(t: &T, ext: &str) -> Result<Body> {
+ let string = t.render()?;
+ let mut body = Body::from_string(string);
+
+ if let Some(mime) = Mime::from_extension(ext) {
+ body.set_mime(mime);
+ }
+
+ Ok(body)
+}
+
+pub fn into_response<T: Template>(t: &T, ext: &str) -> Response {
+ match try_into_body(t, ext) {
+ Ok(body) => {
+ let mut response = Response::new(200);
+ response.set_body(body);
+ response
+ }
+
+ Err(e) => {
+ let mut response = Response::new(500);
+ response.set_body(e.to_string());
+ response
+ }
+ }
+}