aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin
diff options
context:
space:
mode:
authorbnewbold <bnewbold@robocracy.org>2016-10-25 22:11:52 -0700
committerbnewbold <bnewbold@robocracy.org>2016-10-25 22:11:52 -0700
commitec630361e25e765285a03931dfae49a478917538 (patch)
treeac0d3cac4853fcba80162cfe9aa19571c091c01b /src/bin
parent537272c5a764dc97414a50e535039232506fe174 (diff)
downloadmodelthing-ec630361e25e765285a03931dfae49a478917538.tar.gz
modelthing-ec630361e25e765285a03931dfae49a478917538.zip
add webface skeleton
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/modelthing-webface.rs67
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");
+}