]> Untitled Git - lemmy.git/commitdiff
Fixing broken websockets. (#2770)
authorDessalines <dessalines@users.noreply.github.com>
Wed, 1 Mar 2023 02:27:33 +0000 (21:27 -0500)
committerGitHub <noreply@github.com>
Wed, 1 Mar 2023 02:27:33 +0000 (21:27 -0500)
* Fixing broken websockets.

* Use cloned() for serde::Value

src/api_routes_websocket.rs

index d030980686e8f560a0e852d8d352f912e8d1abc5..fdaba6ba545fd04953cb6c951cc130310866a0f5 100644 (file)
@@ -248,14 +248,18 @@ async fn parse_json_message(
   context: LemmyContext,
 ) -> Result<String, LemmyError> {
   let json: Value = serde_json::from_str(&msg)?;
-  let data = &json
+  let data = json
     .get("data")
-    .ok_or_else(|| LemmyError::from_message("missing data"))?
-    .to_string();
-  let op = &json
+    .cloned()
+    .ok_or_else(|| LemmyError::from_message("missing data"))?;
+
+  let missing_op_err = || LemmyError::from_message("missing op");
+
+  let op = json
     .get("op")
-    .ok_or_else(|| LemmyError::from_message("missing op"))?
-    .to_string();
+    .ok_or_else(missing_op_err)?
+    .as_str()
+    .ok_or_else(missing_op_err)?;
 
   // check if api call passes the rate limit, and generate future for later execution
   if let Ok(user_operation_crud) = UserOperationCrud::from_str(op) {
@@ -299,7 +303,7 @@ pub async fn match_websocket_operation_crud(
   context: LemmyContext,
   id: ConnectionId,
   op: UserOperationCrud,
-  data: &str,
+  data: Value,
 ) -> result::Result<String, LemmyError> {
   match op {
     // User ops
@@ -392,13 +396,13 @@ async fn do_websocket_operation_crud<'a, 'b, Data>(
   context: LemmyContext,
   id: ConnectionId,
   op: UserOperationCrud,
-  data: &str,
+  data: Value,
 ) -> result::Result<String, LemmyError>
 where
   Data: PerformCrud + SendActivity<Response = <Data as PerformCrud>::Response>,
   for<'de> Data: Deserialize<'de>,
 {
-  let parsed_data: Data = serde_json::from_str(data)?;
+  let parsed_data: Data = serde_json::from_value(data)?;
   let res = parsed_data
     .perform(&web::Data::new(context.clone()), Some(id))
     .await?;
@@ -410,7 +414,7 @@ pub async fn match_websocket_operation_apub(
   context: LemmyContext,
   id: ConnectionId,
   op: UserOperationApub,
-  data: &str,
+  data: Value,
 ) -> result::Result<String, LemmyError> {
   match op {
     UserOperationApub::GetPersonDetails => {
@@ -436,13 +440,13 @@ async fn do_websocket_operation_apub<'a, 'b, Data>(
   context: LemmyContext,
   id: ConnectionId,
   op: UserOperationApub,
-  data: &str,
+  data: Value,
 ) -> result::Result<String, LemmyError>
 where
   Data: PerformApub + SendActivity<Response = <Data as PerformApub>::Response>,
   for<'de> Data: Deserialize<'de>,
 {
-  let parsed_data: Data = serde_json::from_str(data)?;
+  let parsed_data: Data = serde_json::from_value(data)?;
   let res = parsed_data
     .perform(&web::Data::new(context.clone()), Some(id))
     .await?;
@@ -454,7 +458,7 @@ pub async fn match_websocket_operation(
   context: LemmyContext,
   id: ConnectionId,
   op: UserOperation,
-  data: &str,
+  data: Value,
 ) -> result::Result<String, LemmyError> {
   match op {
     // User ops
@@ -614,13 +618,13 @@ async fn do_websocket_operation<'a, 'b, Data>(
   context: LemmyContext,
   id: ConnectionId,
   op: UserOperation,
-  data: &str,
+  data: Value,
 ) -> result::Result<String, LemmyError>
 where
   Data: Perform + SendActivity<Response = <Data as Perform>::Response>,
   for<'de> Data: Deserialize<'de>,
 {
-  let parsed_data: Data = serde_json::from_str(data)?;
+  let parsed_data: Data = serde_json::from_value(data)?;
   let res = parsed_data
     .perform(&web::Data::new(context.clone()), Some(id))
     .await?;