X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapi%2Fsrc%2Flib.rs;h=2659535a0ceafa745a990519af379b5d78e8cf42;hb=004efd5d94da0eee2a51f8c88a441c0c4afe3871;hp=026045dd2a0c7f368f8fcb8f4491f958fda18391;hpb=09246a20fb4c1ba82fd2a34bd9b0b54e0eb6575f;p=lemmy.git diff --git a/crates/api/src/lib.rs b/crates/api/src/lib.rs index 026045dd..2659535a 100644 --- a/crates/api/src/lib.rs +++ b/crates/api/src/lib.rs @@ -1,7 +1,15 @@ use actix_web::{web, web::Data}; use captcha::Captcha; -use lemmy_api_common::{comment::*, community::*, person::*, post::*, site::*, websocket::*}; -use lemmy_utils::{error::LemmyError, ConnectionId}; +use lemmy_api_common::{ + comment::*, + community::*, + person::*, + post::*, + private_message::*, + site::*, + websocket::*, +}; +use lemmy_utils::{error::LemmyError, utils::check_slurs, ConnectionId}; use lemmy_websocket::{serialize_websocket_message, LemmyContext, UserOperation}; use serde::Deserialize; @@ -12,6 +20,7 @@ mod local_user; mod post; mod post_report; mod private_message; +mod private_message_report; mod site; mod websocket; @@ -98,6 +107,15 @@ pub async fn match_websocket_operation( UserOperation::MarkPrivateMessageAsRead => { do_websocket_operation::(context, id, op, data).await } + UserOperation::CreatePrivateMessageReport => { + do_websocket_operation::(context, id, op, data).await + } + UserOperation::ResolvePrivateMessageReport => { + do_websocket_operation::(context, id, op, data).await + } + UserOperation::ListPrivateMessageReports => { + do_websocket_operation::(context, id, op, data).await + } // Site ops UserOperation::GetModlog => do_websocket_operation::(context, id, op, data).await, @@ -208,6 +226,18 @@ pub(crate) fn captcha_as_wav_base64(captcha: &Captcha) -> String { base64::encode(concat_letters) } +/// Check size of report and remove whitespace +pub(crate) fn check_report_reason(reason: &str, context: &LemmyContext) -> Result<(), LemmyError> { + check_slurs(reason, &context.settings().slur_regex())?; + if reason.is_empty() { + return Err(LemmyError::from_message("report_reason_required")); + } + if reason.chars().count() > 1000 { + return Err(LemmyError::from_message("report_too_long")); + } + Ok(()) +} + #[cfg(test)] mod tests { use lemmy_api_common::utils::check_validator_time;