diff options
Diffstat (limited to 'src/server.rs')
-rw-r--r-- | src/server.rs | 23 |
1 files changed, 21 insertions, 2 deletions
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<Response> { + let data = data::make_data(); Ok(Response::with((status::Ok, Header(ContentType::html()), - "<p>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); |