diff options
author | bnewbold <bnewbold@robocracy.org> | 2016-10-28 13:23:32 -0700 |
---|---|---|
committer | bnewbold <bnewbold@robocracy.org> | 2016-10-28 13:23:32 -0700 |
commit | eefcae61d01874721862454deb8b60eac8b8a3a8 (patch) | |
tree | 904846244c223d8261ca90eebfef09b308f516f0 /src/bin/mt-webface.rs | |
parent | 3859ba31eb03978705dd1b4b7e7a78a7d37ed758 (diff) | |
download | modelthing-eefcae61d01874721862454deb8b60eac8b8a3a8.tar.gz modelthing-eefcae61d01874721862454deb8b60eac8b8a3a8.zip |
rename tools to mt-prefix
Diffstat (limited to 'src/bin/mt-webface.rs')
-rw-r--r-- | src/bin/mt-webface.rs | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/bin/mt-webface.rs b/src/bin/mt-webface.rs new file mode 100644 index 0000000..0940ea0 --- /dev/null +++ b/src/bin/mt-webface.rs @@ -0,0 +1,70 @@ + +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 readme(r: &mut Request) -> PencilResult { + let mut context = BTreeMap::new(); + let raw_text = include_str!("../../README.txt"); + context.insert("raw_text".to_string(), raw_text.to_string()); + return r.app.render_template("raw.html", &context); +} + +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.register_template("raw.html"); + app.get("/", "home", home); + app.get("/readme/", "readme", readme); + 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"); +} |