use chrono::{DateTime, Utc}; use jid::JID; use peanuts::{ element::{FromElement, IntoElement}, Element, }; pub const XMLNS: &str = "urn:xmpp:delay"; #[derive(Debug, Clone)] pub struct Delay { pub from: Option, pub stamp: DateTime, } impl FromElement for Delay { fn from_element(mut element: Element) -> peanuts::element::DeserializeResult { element.check_name("delay")?; element.check_namespace(XMLNS)?; let from = element.attribute_opt("from")?; let stamp = element.attribute("stamp")?; Ok(Delay { from, stamp }) } } impl IntoElement for Delay { fn builder(&self) -> peanuts::element::ElementBuilder { Element::builder("delay", Some(XMLNS)) .push_attribute_opt("from", self.from.clone()) .push_attribute("stamp", self.stamp.format("%C%y-%m-%dT%H:%M:%S%.3f%:z")) } }