Refactor is_hex_string

This commit is contained in:
Sosthene 2024-12-06 15:26:30 +01:00
parent 348e509ddc
commit 103586570f

View File

@ -290,24 +290,21 @@ pub trait Pcd<'a>: Serialize + Deserialize<'a> {
} }
} }
fn is_hex_string(&self) -> bool { fn is_hex_string(&self, length: Option<usize>) -> Result<()> {
let value = match serde_json::to_value(self) { let value = serde_json::to_value(self)?;
Ok(v) => v,
Err(_) => return false
};
match value { match value {
Value::String(s) => { Value::String(s) => {
let vec = Vec::from_hex(&s); let vec = Vec::from_hex(&s)?;
if vec.is_err() { if let Some(len) = length {
return false; let got_length = vec.len();
} else if vec.unwrap().len() != 32 { if got_length != len {
return false; return Err(Error::msg(format!("Wrong length: expected {}, got {}", len, got_length)));
} else { }
return true;
} }
Ok(())
} }
_ => false _ => Err(Error::msg("Not a string Value"))
} }
} }
} }