parse.rs (657B)
1 use crate::types::{RadrootsNostrFromBech32, RadrootsNostrPublicKey}; 2 3 #[derive(Debug, thiserror::Error)] 4 pub enum ParseError { 5 #[error("invalid pubkey format: {0}")] 6 Invalid(String), 7 } 8 9 pub fn radroots_nostr_parse_pubkey(s: &str) -> Result<RadrootsNostrPublicKey, ParseError> { 10 RadrootsNostrPublicKey::from_bech32(s) 11 .or_else(|_| RadrootsNostrPublicKey::from_hex(s)) 12 .map_err(|_| ParseError::Invalid(s.to_string())) 13 } 14 15 pub fn radroots_nostr_parse_pubkeys( 16 input: &[String], 17 ) -> Result<Vec<RadrootsNostrPublicKey>, ParseError> { 18 input 19 .iter() 20 .map(|s| radroots_nostr_parse_pubkey(s)) 21 .collect() 22 }