lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

filter.rs (1189B)


      1 use crate::error::RadrootsNostrError;
      2 use crate::types::{RadrootsNostrFilter, RadrootsNostrKind, RadrootsNostrTimestamp};
      3 
      4 pub fn radroots_nostr_filter_tag(
      5     filter: RadrootsNostrFilter,
      6     tag: &str,
      7     values: Vec<String>,
      8 ) -> Result<RadrootsNostrFilter, RadrootsNostrError> {
      9     let mut chars = tag.chars();
     10     let tag_char = chars
     11         .next()
     12         .ok_or_else(|| RadrootsNostrError::FilterTagError("tag is empty".to_string()))?;
     13     if chars.next().is_some() {
     14         return Err(RadrootsNostrError::FilterTagError(
     15             "tag must be a single letter".to_string(),
     16         ));
     17     }
     18     let tag_key = nostr::filter::SingleLetterTag::from_char(tag_char)
     19         .map_err(|err| RadrootsNostrError::FilterTagError(err.to_string()))?;
     20     Ok(filter.custom_tags(tag_key, values))
     21 }
     22 
     23 pub fn radroots_nostr_kind(kind: u16) -> RadrootsNostrKind {
     24     RadrootsNostrKind::Custom(kind)
     25 }
     26 
     27 pub fn radroots_nostr_filter_kind(kind: u16) -> RadrootsNostrFilter {
     28     RadrootsNostrFilter::new().kind(RadrootsNostrKind::Custom(kind))
     29 }
     30 
     31 pub fn radroots_nostr_filter_new_events(filter: RadrootsNostrFilter) -> RadrootsNostrFilter {
     32     filter.since(RadrootsNostrTimestamp::now())
     33 }