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 {
let value = match serde_json::to_value(self) {
Ok(v) => v,
Err(_) => return false
};
fn is_hex_string(&self, length: Option<usize>) -> Result<()> {
let value = serde_json::to_value(self)?;
match value {
Value::String(s) => {
let vec = Vec::from_hex(&s);
if vec.is_err() {
return false;
} else if vec.unwrap().len() != 32 {
return false;
} else {
return true;
let vec = Vec::from_hex(&s)?;
if let Some(len) = length {
let got_length = vec.len();
if got_length != len {
return Err(Error::msg(format!("Wrong length: expected {}, got {}", len, got_length)));
}
}
Ok(())
}
_ => false
_ => Err(Error::msg("Not a string Value"))
}
}
}