chiark / gitweb /
move implementation into generic, prep for reorg
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 6 Jul 2020 15:23:18 +0000 (16:23 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 6 Jul 2020 15:23:18 +0000 (16:23 +0100)
src/bin/server.rs

index 77ec29b8c20f3c7c9c1696cf35c8eeceeb8c4082..80c2018e00fa72dc8ef02444effefc9cc3e3ae82 100644 (file)
@@ -125,14 +125,13 @@ struct ApiPiece<O : ApiPieceOp> {
 #[derive(Debug,Serialize,Deserialize)]
 struct ApiPieceGrab {
 }
-trait ApiPieceOp {
+trait ApiPieceOp : Debug {
 }
 impl ApiPieceOp for ApiPieceGrab { }
 
-#[post("/_/api/grab", format="json", data="<form>")]
 #[throws(OE)]
-fn api_grab(form : Json<ApiPiece<ApiPieceGrab>>)
-            -> impl response::Responder<'static> {
+fn api_piece_op<O: ApiPieceOp>(form : Json<ApiPiece<O>>)
+                   -> impl response::Responder<'static> {
   let iad = lookup_token(&form.ctoken)?;
   let client = iad.ident;
   let mut g = iad.g.lock()?;
@@ -204,6 +203,13 @@ fn api_grab(form : Json<ApiPiece<ApiPieceGrab>>)
   ""
 }
 
+#[post("/_/api/grab", format="json", data="<form>")]
+#[throws(OE)]
+fn api_grab(form : Json<ApiPiece<ApiPieceGrab>>)
+            -> impl response::Responder<'static> {
+  api_piece_op(form)
+}
+
 #[derive(Debug,Serialize,Deserialize)]
 struct ApiUngrab {
   t : String,