diff options
Diffstat (limited to 'src/bin')
-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"); +} |