use super::dto::AccountPubkey; use crate::utils::error::Error; use nostr::prelude::FromPkStr; use validator::{Validate, ValidationError, validate_url}; pub async fn validate_account_pubkey_query( account_pubkey: AccountPubkey, ) -> Result where AccountPubkey: Validate, { match account_pubkey.validate() { Ok(_) => Ok(account_pubkey), Err(e) => { log::error!("AccountPubkey validation errors: {}", e); Err(Error::validation_error(e)) } } } pub fn validate_pubkey(value: &str) -> Result<(), ValidationError> { if value.is_empty() { return Err(ValidationError::new("Value is empty")); } match nostr::Keys::from_pk_str(value) { Ok(_) => Ok(()), Err(_) => Err(ValidationError::new("Failed to parse pubkey")), } } pub fn validate_relays(relays: &Vec) -> Result<(), ValidationError> { if relays.is_empty() { return Ok(()) } if relays.iter().all(validate_url) { return Ok(()) } Err(ValidationError::new("Relays have wrong url format")) }