lib

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

encode.rs (1084B)


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