From 6656ba9d32411c2b528d611e167bbfc7eb8aa4e8 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Sat, 24 Nov 2018 12:37:05 +0100 Subject: [PATCH] StringSchema: add method to check string length --- src/api/schema.rs | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/api/schema.rs b/src/api/schema.rs index a9b859ec..4d7d12fe 100644 --- a/src/api/schema.rs +++ b/src/api/schema.rs @@ -135,6 +135,24 @@ impl StringSchema { self.max_length = Some(max_length); self } + + fn check_length(&self, length: usize) -> Result<(), Error> { + + if let Some(min_length) = self.min_length { + if length < min_length { + bail!("value must be at least {} characters long", min_length); + } + } + + if let Some(max_length) = self.max_length { + if length > max_length { + bail!("value may only be {} characters long", max_length); + } + } + + Ok(()) + } + } #[derive(Debug)] @@ -402,19 +420,8 @@ fn parse_simple_value(value_str: &str, schema: &Schema) -> Result } Schema::String(string_schema) => { let res: String = value_str.into(); - let char_count = res.chars().count(); - if let Some(min_length) = string_schema.min_length { - if char_count < min_length { - bail!("value must be at least {} characters long", min_length); - } - } - - if let Some(max_length) = string_schema.max_length { - if char_count > max_length { - bail!("value may only be {} characters long", max_length); - } - } + string_schema.check_length(res.chars().count())?; if let Some(ref format) = string_schema.format { match format.as_ref() {