summaryrefslogtreecommitdiff
path: root/src/server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server.rs')
-rw-r--r--src/server.rs23
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);