From c6d6702cf838fa8d43a511d455f45a385b74e427 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sun, 9 Jul 2017 01:23:54 -0400 Subject: add: Rendering of quotes. --- src/server.rs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/server.rs') diff --git a/src/server.rs b/src/server.rs index 3a15e45..37c5713 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1,18 +1,37 @@ use iron::headers::{ContentType}; use iron::modifiers::{Header}; use iron::{Iron, Chain, Request, Response, IronResult, status}; +use handlebars_iron::{HandlebarsEngine, MemorySource, Template}; +use std::collections::BTreeMap; +use data; + +fn renderer() -> HandlebarsEngine { + let mut e = HandlebarsEngine::new(); + + let mut templates = BTreeMap::new(); + templates.insert("quotes".to_string(), + include_str!("data/templates/quotes.hbs").to_string()); + + e.add(Box::new(MemorySource(templates))); + if let Err(r) = e.reload() { + panic!("Error loading templates: {}", r) + } + e +} fn info(_r: &mut Request) -> IronResult { + let data = data::make_data(); Ok(Response::with((status::Ok, Header(ContentType::html()), - "

Info"))) + Template::new("quotes", data)))) } pub fn serve(port: u16) { let router = router!( info: get "/" => info, ); - let chain = Chain::new(router); + let mut chain = Chain::new(router); + chain.link_after(renderer()); let bind_address = format!("{}:{}", "::", port); let _server = Iron::new(chain).http(bind_address.as_str()); info!("Serving on {}", bind_address); -- cgit v1.2.3