diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-23 04:37:42 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-23 04:37:42 -0500 |
commit | 0650ecd21a522536c5dc3a764847583e0fae61df (patch) | |
tree | c212c60b6aaf9bdc6cc41286c78f3830623399bb | |
parent | 7e198ba7caecfd98cb25118b403f23545716e21b (diff) | |
download | teleterm-0650ecd21a522536c5dc3a764847583e0fae61df.tar.gz teleterm-0650ecd21a522536c5dc3a764847583e0fae61df.zip |
precompile the templates
-rw-r--r-- | teleterm/src/web.rs | 25 |
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)) |