extern crate iron; #[macro_use] extern crate log; #[macro_use] extern crate router; extern crate env_logger; #[macro_use] extern crate horrorshow; use iron::status; use iron::modifiers::Header; use iron::headers::ContentType; use iron::{Iron, Request, IronResult, Response}; use router::Router; use horrorshow::prelude::*; use horrorshow::Raw; use std::process::Command; fn render_message(message: &str) -> String { (html!{ : Raw(""); html { head { title: "Title"; } body { p { : message } } } }) .into_string() .unwrap() } fn hello(r: &mut Request) -> IronResult { let name = r.extensions .get::() .unwrap() .find("name") .unwrap_or("World"); let output = Command::new("date").output().unwrap().stdout; let date = String::from_utf8_lossy(&output); Ok(Response::with((status::Ok, Header(ContentType::html()), render_message(&format!("Hello, {}. The time is {}", name, date))))) } fn main() { env_logger::init().unwrap(); info!("Some debug info"); let router = router!( root: get "/" => hello, name: get "/:name" => hello); let _server = Iron::new(router).http(":::8080").unwrap(); println!("On 8080"); }