From 416d8e481262163903012be64a8a0b8513f0f858 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 22 Jun 2020 01:02:56 +0100 Subject: [PATCH] loads blah --- Cargo.toml | 2 +- src/bin/server.rs | 16 +++++++++++++++- src/global.rs | 2 +- src/imports.rs | 2 +- templates/blah.tera | 1 + templates/script.js | 2 +- 6 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 templates/blah.tera diff --git a/Cargo.toml b/Cargo.toml index e86ad5a9..d14901fc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" diff --git a/src/bin/server.rs b/src/bin/server.rs index c9589c39..63316690 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -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 { Ok(Template::render("loading",&c)) } +#[derive(Deserialize)] +struct SessionForm { + token : String, +} +#[post("/_/session", format="json", data="
")] +fn session(form : Json) -> Result { + // 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, ]) diff --git a/src/global.rs b/src/global.rs index 3733692b..bbf0a9a5 100644 --- a/src/global.rs +++ b/src/global.rs @@ -52,7 +52,7 @@ lazy_static! { static ref GLOBAL : Global = Default::default(); } -fn lookup_token(s : &str) -> Option { +pub fn lookup_token(s : &str) -> Option { GLOBAL.tokens.read().unwrap().get(s).cloned() } diff --git a/src/imports.rs b/src/imports.rs index 571b5b81..21310580 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -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 index 00000000..08eeaba5 --- /dev/null +++ b/templates/blah.tera @@ -0,0 +1 @@ +

BLAH!

diff --git a/templates/script.js b/templates/script.js index 16bdaccb..f6271914 100644 --- a/templates/script.js +++ b/templates/script.js @@ -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); } -- 2.30.2