From 8e08195b44d6139d4b2e96860960e574068e59fc Mon Sep 17 00:00:00 2001 From: silverpill Date: Wed, 14 Dec 2022 16:39:00 +0000 Subject: [PATCH] Increase max number of allowed extra fields for remote actors to 100 --- src/models/profiles/types.rs | 10 ++++++---- src/models/profiles/validators.rs | 20 ++++++++++++++------ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/models/profiles/types.rs b/src/models/profiles/types.rs index 239224e..58c38cf 100644 --- a/src/models/profiles/types.rs +++ b/src/models/profiles/types.rs @@ -409,11 +409,12 @@ impl ProfileCreateData { if let Some(display_name) = &self.display_name { validate_display_name(display_name)?; }; + let is_remote = self.actor_json.is_some(); if let Some(bio) = &self.bio { - let cleaned_bio = clean_bio(bio, self.actor_json.is_some())?; + let cleaned_bio = clean_bio(bio, is_remote)?; self.bio = Some(cleaned_bio); }; - self.extra_fields = clean_extra_fields(&self.extra_fields)?; + self.extra_fields = clean_extra_fields(&self.extra_fields, is_remote)?; Ok(()) } } @@ -451,12 +452,13 @@ impl ProfileUpdateData { if let Some(display_name) = &self.display_name { validate_display_name(display_name)?; }; + let is_remote = self.actor_json.is_some(); // Validate and clean bio if let Some(bio) = &self.bio { - let cleaned_bio = clean_bio(bio, self.actor_json.is_some())?; + let cleaned_bio = clean_bio(bio, is_remote)?; self.bio = Some(cleaned_bio); }; - self.extra_fields = clean_extra_fields(&self.extra_fields)?; + self.extra_fields = clean_extra_fields(&self.extra_fields, is_remote)?; Ok(()) } } diff --git a/src/models/profiles/validators.rs b/src/models/profiles/validators.rs index 13a7412..57445e9 100644 --- a/src/models/profiles/validators.rs +++ b/src/models/profiles/validators.rs @@ -49,9 +49,10 @@ pub fn clean_bio(bio: &str, is_remote: bool) -> Result } /// Validates extra fields and removes fields with empty labels -pub fn clean_extra_fields(extra_fields: &[ExtraField]) - -> Result, ValidationError> -{ +pub fn clean_extra_fields( + extra_fields: &[ExtraField], + is_remote: bool, +) -> Result, ValidationError> { let mut cleaned_extra_fields = vec![]; for mut field in extra_fields.iter().cloned() { field.name = field.name.trim().to_string(); @@ -67,8 +68,14 @@ pub fn clean_extra_fields(extra_fields: &[ExtraField]) }; cleaned_extra_fields.push(field); }; - if cleaned_extra_fields.len() > 20 { - return Err(ValidationError("at most 20 fields are allowed")); + if is_remote { + if cleaned_extra_fields.len() > 100 { + return Err(ValidationError("at most 100 fields are allowed")); + }; + } else { + if cleaned_extra_fields.len() > 10 { + return Err(ValidationError("at most 10 fields are allowed")); + }; }; Ok(cleaned_extra_fields) } @@ -118,7 +125,8 @@ mod tests { value: "

0x1234

".to_string(), value_source: None, }]; - let result = clean_extra_fields(&extra_fields).unwrap().pop().unwrap(); + let result = clean_extra_fields(&extra_fields, false) + .unwrap().pop().unwrap(); assert_eq!(result.name, "$ETH"); assert_eq!(result.value, "0x1234"); }