chiark / gitweb /
loads blah
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 22 Jun 2020 00:02:56 +0000 (01:02 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 22 Jun 2020 00:03:04 +0000 (01:03 +0100)
Cargo.toml
src/bin/server.rs
src/global.rs
src/imports.rs
templates/blah.tera [new file with mode: 0644]
templates/script.js

index e86ad5a9f2dd5f62c5190f638966673ed66bd1fa..d14901fc66b8fe4a7285dbd30f3798ec83140b88 100644 (file)
@@ -28,7 +28,7 @@ slotmap = "0.4"
 fehler = "1"
 
 rocket = "0.4"
-rocket_contrib = { version = "0.4", default-features=false, features=["tera_templates","helmet"] }
+rocket_contrib = { version = "0.4", default-features=false, features=["tera_templates","helmet","json"] }
 
 #hmac = "0.7"
 #base64 = "0.10"
index c9589c399de119a1ec0cda1ea4a4dc2fa13072d3..63316690238a4afbdd6917e11d2cbab76348a370 100644 (file)
@@ -1,7 +1,8 @@
 
 #![feature(proc_macro_hygiene, decl_macro)]
 
-use rocket::{get,routes};
+use rocket::{get,post,routes};
+use rocket_contrib::json::Json;
 //use rocket::{post};
 
 use game::imports::*;
@@ -46,6 +47,18 @@ fn loading(token : InstanceAccess) -> Result<Template,RE> {
   Ok(Template::render("loading",&c))
 }
 
+#[derive(Deserialize)]
+struct SessionForm {
+  token : String,
+}
+#[post("/_/session", format="json", data="<form>")]
+fn session(form : Json<SessionForm>) -> Result<Template,RE> {
+  // make session in this game, log a message to other players
+  let _i = lookup_token(&form.token).ok_or(anyhow!("unknown token"))?;
+  let c = TestRenderContext { };
+  Ok(Template::render("blah",&c))
+}
+
 #[derive(Serialize)]
 enum Update {
   TestCounter { value: usize },
@@ -97,6 +110,7 @@ fn main() {
     .mount("/", routes![
       index,
       loading,
+      session,
       resource,
       updates,
     ])
index 3733692b23b4702e49a3979208dcb780ea7b999f..bbf0a9a53cedd816c454cd47ec48f7471e65cd72 100644 (file)
@@ -52,7 +52,7 @@ lazy_static! {
   static ref GLOBAL : Global = Default::default();
 }
 
-fn lookup_token(s : &str) -> Option<InstanceAccessDetails> {
+pub fn lookup_token(s : &str) -> Option<InstanceAccessDetails> {
   GLOBAL.tokens.read().unwrap().get(s).cloned()
 }
 
index 571b5b8154f53eaab39a81b99e9b394486b25acc..21310580f3b83efc34ccab4d3acae4cd29a671db 100644 (file)
@@ -27,7 +27,7 @@ pub use rocket::response;
 pub use slotmap::dense::{DenseSlotMap};
 
 pub use crate::global;
-pub use crate::global::InstanceAccess;
+pub use crate::global::{lookup_token,InstanceAccess,InstanceAccessDetails};
 
 pub type E = anyhow::Error;
 
diff --git a/templates/blah.tera b/templates/blah.tera
new file mode 100644 (file)
index 0000000..08eeaba
--- /dev/null
@@ -0,0 +1 @@
+<h2>BLAH!<h2>
index 16bdaccbbef52634aed1ffd0a524392d9ce59b40..f62719146764d67c8c416df6fe21dc64f322c364 100644 (file)
@@ -103,7 +103,7 @@ function doload(){
   console.log('DOLOAD');
   var elem = document.getElementById('loading_token');
   token = elem.dataset.token;
-  xhr_post_then('/session', 
+  xhr_post_then('/_/session', 
                JSON.stringify({ token : token }),
                loaded);
 }