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 = 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("base.html"); 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", model_view); info!("Running on http://localhost:5000/"); app.run("127.0.0.1:5000"); }