chiark / gitweb /
prep for api internal refact
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 6 Jul 2020 15:20:20 +0000 (16:20 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 6 Jul 2020 15:20:20 +0000 (16:20 +0100)
src/bin/server.rs

index 7c969b608aa08ac5d0ce9bc6f102dd11cf8babce..77ec29b8c20f3c7c9c1696cf35c8eeceeb8c4082 100644 (file)
@@ -114,15 +114,25 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
 }
 
 #[derive(Debug,Serialize,Deserialize)]
-struct ApiGrab {
+struct ApiPiece<O : ApiPieceOp> {
   ctoken : String,
   piece : VisiblePieceId,
   gen : Generation,
   cseq : ClientSequence,
+  #[serde(flatten)]
+  op : O,
 }
+#[derive(Debug,Serialize,Deserialize)]
+struct ApiPieceGrab {
+}
+trait ApiPieceOp {
+}
+impl ApiPieceOp for ApiPieceGrab { }
+
 #[post("/_/api/grab", format="json", data="<form>")]
 #[throws(OE)]
-fn api_grab(form : Json<ApiGrab>) -> impl response::Responder<'static> {
+fn api_grab(form : Json<ApiPiece<ApiPieceGrab>>)
+            -> impl response::Responder<'static> {
   let iad = lookup_token(&form.ctoken)?;
   let client = iad.ident;
   let mut g = iad.g.lock()?;