diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 6 | ||||
| -rw-r--r-- | src/main.rs | 59 | 
2 files changed, 65 insertions, 0 deletions
| diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..cdfbe1a --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,6 @@ +#[cfg(test)] +mod tests { +    #[test] +    fn it_works() { +    } +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..0893825 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,59 @@ +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("<!DOCTYPE html>"); +        html { +            head { title: "Title"; } +            body { +                p { +                    : message +                } +            } +        } +    }) +            .into_string() +            .unwrap() +} + +fn hello(r: &mut Request) -> IronResult<Response> { +    let name = r.extensions +        .get::<Router>() +        .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"); +} | 
