forked from jmug/stoatchat
feat(messaging): cap total text content to 2k characters
This commit is contained in:
@@ -166,6 +166,31 @@ impl Message {
|
||||
.await;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Validate the sum of content of a message is under threshold
|
||||
pub fn validate_sum(
|
||||
content: &Option<String>,
|
||||
embeds: &Option<Vec<SendableEmbed>>,
|
||||
) -> Result<()> {
|
||||
let mut running_total = 0;
|
||||
if let Some(content) = content {
|
||||
running_total += content.len();
|
||||
}
|
||||
|
||||
if let Some(embeds) = embeds {
|
||||
for embed in embeds {
|
||||
if let Some(desc) = &embed.description {
|
||||
running_total += desc.len();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if running_total <= 2000 {
|
||||
Ok(())
|
||||
} else {
|
||||
Err(Error::PayloadTooLarge)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub trait IntoUsers {
|
||||
|
||||
@@ -41,6 +41,7 @@ pub enum Error {
|
||||
TooManyAttachments,
|
||||
TooManyReplies,
|
||||
EmptyMessage,
|
||||
PayloadTooLarge,
|
||||
CannotRemoveYourself,
|
||||
GroupTooLarge {
|
||||
max: usize,
|
||||
@@ -145,6 +146,7 @@ impl<'r> Responder<'r, 'static> for Error {
|
||||
Error::TooManyAttachments => Status::BadRequest,
|
||||
Error::TooManyReplies => Status::BadRequest,
|
||||
Error::EmptyMessage => Status::UnprocessableEntity,
|
||||
Error::PayloadTooLarge => Status::UnprocessableEntity,
|
||||
Error::CannotRemoveYourself => Status::BadRequest,
|
||||
Error::GroupTooLarge { .. } => Status::Forbidden,
|
||||
Error::AlreadyInGroup => Status::Conflict,
|
||||
|
||||
Reference in New Issue
Block a user