aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-23 04:37:42 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-23 04:37:42 -0500
commit0650ecd21a522536c5dc3a764847583e0fae61df (patch)
treec212c60b6aaf9bdc6cc41286c78f3830623399bb
parent7e198ba7caecfd98cb25118b403f23545716e21b (diff)
downloadteleterm-0650ecd21a522536c5dc3a764847583e0fae61df.tar.gz
teleterm-0650ecd21a522536c5dc3a764847583e0fae61df.zip
precompile the templates
-rw-r--r--teleterm/src/web.rs25
1 files changed, 17 insertions, 8 deletions
diff --git a/teleterm/src/web.rs b/teleterm/src/web.rs
index c766e38..bfc5bcb 100644
--- a/teleterm/src/web.rs
+++ b/teleterm/src/web.rs
@@ -25,6 +25,20 @@ lazy_static_include::lazy_static_include_bytes!(
"static/teleterm.css"
);
+const INDEX_HTML_TMPL_NAME: &str = "index";
+lazy_static::lazy_static! {
+ static ref HANDLEBARS: handlebars::Handlebars = {
+ let mut handlebars = handlebars::Handlebars::new();
+ handlebars
+ .register_template_string(
+ INDEX_HTML_TMPL_NAME,
+ String::from_utf8(INDEX_HTML_TMPL.to_vec()).unwrap(),
+ )
+ .unwrap();
+ handlebars
+ };
+}
+
#[derive(
serde::Deserialize,
gotham_derive::StateData,
@@ -86,7 +100,7 @@ fn router(data: &TemplateData) -> impl gotham::handler::NewHandler {
gotham::router::builder::build_simple_router(|route| {
route.get("/").to_new_handler(serve_template(
"text/html",
- &INDEX_HTML_TMPL,
+ INDEX_HTML_TMPL_NAME,
data,
));
route
@@ -121,19 +135,14 @@ fn serve_static(
fn serve_template(
content_type: &'static str,
- s: &'static [u8],
+ name: &'static str,
data: &TemplateData,
) -> impl gotham::handler::NewHandler {
let data = data.clone();
move || {
let data = data.clone();
Ok(move |state| {
- let rendered = handlebars::Handlebars::new()
- .render_template(
- &String::from_utf8(s.to_vec()).unwrap(),
- &data,
- )
- .unwrap();
+ let rendered = HANDLEBARS.render(name, &data).unwrap();
let response = hyper::Response::builder()
.header("Content-Type", content_type)
.body(hyper::Body::from(rendered))