lib

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

encode.rs (1085B)


      1 #[cfg(not(feature = "std"))]
      2 use alloc::{
      3     string::{String, ToString},
      4     vec,
      5     vec::Vec,
      6 };
      7 
      8 use radroots_event::social::app_data::{AppData, KIND_APP_DATA};
      9 use radroots_event::tag::name::TAG_D;
     10 
     11 use crate::error::EventEncodeError;
     12 use radroots_event::wire::Nip01EventWireParts;
     13 
     14 pub fn app_data_build_tags(app_data: &AppData) -> Result<Vec<Vec<String>>, EventEncodeError> {
     15     if app_data.d_tag.trim().is_empty() {
     16         return Err(EventEncodeError::EmptyRequiredField("d_tag"));
     17     }
     18     Ok(vec![vec![TAG_D.to_string(), app_data.d_tag.clone()]])
     19 }
     20 
     21 pub fn to_wire_parts(app_data: &AppData) -> Result<Nip01EventWireParts, EventEncodeError> {
     22     to_wire_parts_with_kind(app_data, KIND_APP_DATA)
     23 }
     24 
     25 pub fn to_wire_parts_with_kind(
     26     app_data: &AppData,
     27     kind: u32,
     28 ) -> Result<Nip01EventWireParts, EventEncodeError> {
     29     if kind != KIND_APP_DATA {
     30         return Err(EventEncodeError::InvalidKind(kind));
     31     }
     32     let tags = app_data_build_tags(app_data)?;
     33     Ok(Nip01EventWireParts {
     34         kind,
     35         content: app_data.content.clone(),
     36         tags,
     37     })
     38 }