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 }