]> Untitled Git - lemmy.git/commitdiff
simplify json serialization code
authorFelix <me@nutomic.com>
Sat, 18 Jan 2020 16:25:45 +0000 (17:25 +0100)
committerFelix <me@nutomic.com>
Sat, 18 Jan 2020 16:25:45 +0000 (17:25 +0100)
server/src/websocket/server.rs

index 2d9ddcd492cc1187f6f862d0a363f9a8a55b9a0c..9afbff25e2420018c0728ec56df5d0e10a5ebce2 100644 (file)
@@ -295,18 +295,21 @@ impl Handler<StandardMessage> for ChatServer {
   }
 }
 
+#[derive(Serialize)]
+struct WebsocketResponse<T> {
+  op: String,
+  data: T,
+}
+
 fn to_json_string<T>(op: &UserOperation, data: T) -> Result<String, Error>
 where
   T: Serialize,
 {
-  let mut json = serde_json::to_value(&data)?;
-  match json.as_object_mut() {
-    Some(j) => j.insert("op".to_string(), serde_json::to_value(op.to_string())?),
-    None => return Err(format_err!("")),
+  let response = WebsocketResponse {
+    op: op.to_string(),
+    data,
   };
-  // TODO: it seems like this is never called?
-  let x = serde_json::to_string(&json)?;
-  Ok(x)
+  Ok(serde_json::to_string(&response)?)
 }
 
 fn parse_json_message(chat: &mut ChatServer, msg: StandardMessage) -> Result<String, Error> {