lib

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

encode.rs (1093B)


      1 #[cfg(not(feature = "std"))]
      2 use alloc::{string::String, vec::Vec};
      3 
      4 use radroots_events::kinds::KIND_MESSAGE;
      5 use radroots_events::message::RadrootsMessage;
      6 
      7 use crate::error::EventEncodeError;
      8 use crate::message::tags::{build_recipient_tags, build_reply_tag, build_subject_tag};
      9 use crate::wire::WireEventParts;
     10 
     11 const DEFAULT_KIND: u32 = KIND_MESSAGE;
     12 
     13 pub fn message_build_tags(message: &RadrootsMessage) -> Result<Vec<Vec<String>>, EventEncodeError> {
     14     let mut tags = build_recipient_tags(&message.recipients)?;
     15     if let Some(tag) = build_reply_tag(&message.reply_to)? {
     16         tags.push(tag);
     17     }
     18     if let Some(tag) = build_subject_tag(&message.subject)? {
     19         tags.push(tag);
     20     }
     21     Ok(tags)
     22 }
     23 
     24 pub fn to_wire_parts(message: &RadrootsMessage) -> Result<WireEventParts, EventEncodeError> {
     25     if message.content.trim().is_empty() {
     26         return Err(EventEncodeError::EmptyRequiredField("content"));
     27     }
     28     let tags = message_build_tags(message)?;
     29     Ok(WireEventParts {
     30         kind: DEFAULT_KIND,
     31         content: message.content.clone(),
     32         tags,
     33     })
     34 }