From: Ian Jackson Date: Sat, 27 Jun 2020 18:06:56 +0000 (+0100) Subject: horrible lineless error! X-Git-Tag: otter-0.2.0~1525 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=b4c815f1d71f6c94267af4e8d89fbf5ed970419d;p=otter.git horrible lineless error! --- diff --git a/src/bin/server.rs b/src/bin/server.rs index 463dbad7..cc18233b 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -111,6 +111,13 @@ fn session(form : Json) -> Result { Ok(Template::render("test",&c)) } +#[derive(Error,Debug)] +#[error("operation error {:?}",self)] +enum OpError { + PieceGone, + PieceHeld, +} + #[derive(Debug,Serialize,Deserialize)] struct ApiGrab { t : String, @@ -119,7 +126,17 @@ struct ApiGrab { #[post("/_/api/grab", format="json", data="
")] #[throws(RE)] fn api_grab(form : Json) -> impl response::Responder<'static> { - eprintln!("API {:?}", &form); + let iad = lookup_token(&form.t).ok_or_else(||anyhow!("unknown token"))?; + let g = iad.i.lock().map_err(|e| anyhow!("lock poison {:?}",&e))?; + let r : Result<(),OpError> = { + let p = g.gs.pieces.get_mut(form.p)/*.ok_or(OpError::PieceGone)?*/; +/* + if p.held != None { Err(OpError::PieceHeld)? }; + p.held = Some(iad.user); +*/ + Ok(()) + }; + eprintln!("API {:?} => {:?}", &form, &r); "" }