diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bin/modelthing-webface.rs | 67 | 
1 files changed, 67 insertions, 0 deletions
| diff --git a/src/bin/modelthing-webface.rs b/src/bin/modelthing-webface.rs new file mode 100644 index 0000000..0815117 --- /dev/null +++ b/src/bin/modelthing-webface.rs @@ -0,0 +1,67 @@ + +extern crate pencil; +#[macro_use] extern crate log; +extern crate env_logger; + +use std::collections::BTreeMap; +use pencil::Pencil; +use pencil::{Request, PencilResult, Response, HTTPError}; + + +fn home(r: &mut Request) -> PencilResult { +    let context: BTreeMap<String,String> = BTreeMap::new(); +    return r.app.render_template("home.html", &context); +} + +fn about(_: &mut Request) -> PencilResult { +    let mut response = Response::from(include_str!("../../README.txt")); +    response.set_content_type("text/plain"); +    Ok(response) +} + +fn model_list(_: &mut Request) -> PencilResult { +    Ok(Response::from("List of Models")) +} + +fn model_view(r: &mut Request) -> PencilResult { +    let model_id = r.view_args.get("model_id").unwrap(); +    let mut context = BTreeMap::new(); +    context.insert("model_id".to_string(), model_id.to_string()); +    return r.app.render_template("model_view.html", &context); +} + +fn page_not_found(_: HTTPError) -> PencilResult { +    let mut response = Response::from("404: Not Found"); +    response.status_code = 500; +    Ok(response) +} + +fn server_error(_: HTTPError) -> PencilResult { +    let mut response = Response::from("500: Server Error"); +    response.status_code = 500; +    Ok(response) +} + +fn main() { + +    env_logger::init().unwrap(); + +    let mut app = Pencil::new("webface"); +    app.name = "modelthing-webface".to_string(); +    app.set_debug(true); +    app.set_log_level(); +    app.httperrorhandler(404, page_not_found); +    app.httperrorhandler(500, server_error); +    app.enable_static_file_handling(); +    debug!("root_path: {}", app.root_path); + +    app.register_template("home.html"); +    app.get("/", "home", home); +    app.get("/about/", "about", about); +    app.get("/model_list/", "model_list", model_list); +    app.register_template("model_view.html"); +    app.get("/model/<model_id:string>", "model", model_view); + +    info!("Running on http://localhost:5000/"); +    app.run("127.0.0.1:5000"); +} | 
