Fixing broken websockets. (#2770)
* Fixing broken websockets. * Use cloned() for serde::Value
This commit is contained in:
parent
f0e1627824
commit
3844ac76c3
1 changed files with 19 additions and 15 deletions
|
@ -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?;
|
||||
|
|
Loading…
Reference in a new issue