use alloc::boxed::Box;
use core::iter;
use crate::{Event, Kind, RelayUrl, TagStandard};
pub fn extract_relay_list<'a>(event: &'a Event) -> Box<dyn Iterator<Item = &'a RelayUrl> + 'a> {
if event.kind != Kind::InboxRelays {
return Box::new(iter::empty());
}
Box::new(event.tags.iter().filter_map(|tag| {
if let Some(TagStandard::Relay(url)) = tag.as_standardized() {
Some(url)
} else {
None
}
}))
}
pub fn extract_owned_relay_list(event: Event) -> Box<dyn Iterator<Item = RelayUrl>> {
if event.kind != Kind::InboxRelays {
return Box::new(iter::empty());
}
Box::new(event.tags.into_iter().filter_map(|tag| {
if let Some(TagStandard::Relay(url)) = tag.to_standardized() {
Some(url)
} else {
None
}
}))
}