chiark / gitweb /
wip spec
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 19 Jul 2020 18:00:33 +0000 (19:00 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 21 Jul 2020 21:21:42 +0000 (22:21 +0100)
src/global.rs
src/lib.rs
src/session.rs
src/spec.rs [new file with mode: 0644]

index 95f0d11c834a8dbe5f79a411187ca54f868e0b1c..6136b1a3803480b295b2a8a027a4b9b7253526b9 100644 (file)
@@ -276,7 +276,7 @@ impl AccessId for ClientId {
 
 impl RawToken {
   #[throws(OE)]
-  fn new_random() -> Self {
+  pub fn new_random() -> Self {
     let mut rng = thread_rng();
     let token = RawToken (
       repeat_with(|| rng.sample(Alphanumeric))
index 3c2d8cd20f71a8009edc7fd73d890c3ca0625220..482792f6dfe6314b7765d97fc0800177f9b003bc 100644 (file)
@@ -12,4 +12,5 @@ pub mod error;
 pub mod http;
 pub mod session;
 pub mod api;
+pub mod spec;
 #[path="slotmap-slot-idx.rs"] pub mod slotmap_slot_idx;
index 2253c2a512270ede7c9096e79e3df4dc18975fe1..a1ac516fe711c954f265477e6fb10737f19a3bdb 100644 (file)
@@ -55,7 +55,7 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
       g : iad.g.clone(),
       ident : client,
     };
-    let ctoken = record_token(&mut ig, ciad);
+    let ctoken = record_token(&mut ig, ciad)?;
     let ig = &mut *ig;
 
     let mut uses = vec![];
diff --git a/src/spec.rs b/src/spec.rs
new file mode 100644 (file)
index 0000000..0288920
--- /dev/null
@@ -0,0 +1,18 @@
+
+#![allow(dead_code)]
+
+use crate::imports::*;
+
+struct GameSpec {
+  players : Vec<PlayerSpec>
+}
+
+struct PlayerSpec {
+  nick: String,
+  access: Box<dyn PlayerAccessSpec>,
+}
+
+trait PlayerAccessSpec {
+  #[throws(OE)]
+  fn make_token(&self) -> RawToken { RawToken::new_random()? }
+}