diff --git a/src/block.rs b/src/block.rs index 1870d46..d84ab9d 100644 --- a/src/block.rs +++ b/src/block.rs @@ -71,6 +71,13 @@ impl bindings::bech32_nprofile { pub fn pubkey(&self) -> &[u8; 32] { unsafe { &*(self.pubkey as *const [u8; 32]) } } + + pub fn relays_to_strings(&self) -> Vec { + self.relays.relays[0..(self.relays.num_relays as usize)] + .iter() + .map(|block| block.as_str().to_string()) + .collect() + } } impl bindings::bech32_npub { @@ -98,6 +105,22 @@ impl bindings::bech32_nevent { Some(&*(self.pubkey as *const [u8; 32])) } } + + pub fn relays_to_strings(&self) -> Vec { + self.relays.relays[0..(self.relays.num_relays as usize)] + .iter() + .map(|block| block.as_str().to_string()) + .collect() + } +} + +impl bindings::bech32_naddr { + pub fn relays_to_strings(&self) -> Vec { + self.relays.relays[0..(self.relays.num_relays as usize)] + .iter() + .map(|block| block.as_str().to_string()) + .collect() + } } impl<'a> Mention<'a> { @@ -421,6 +444,10 @@ mod tests { assert_eq!(p.relays.num_relays, 2); assert_eq!(p.relays.relays[0].as_str(), "wss://r.x.com"); assert_eq!(p.relays.relays[1].as_str(), "wss://djbas.sadkb.com"); + assert_eq!( + p.relays_to_strings(), + vec!["wss://r.x.com", "wss://djbas.sadkb.com"] + ); nprofile_check = true; } }