use peanuts::{Element, FromElement, IntoElement}; use crate::xep_0297::Forwarded; pub const XMLNS: &str = "urn:xmpp:carbons:2"; #[derive(Clone, Debug)] pub struct Disable; impl FromElement for Disable { fn from_element(element: Element) -> peanuts::DeserializeResult { element.check_name("disable")?; element.check_namespace(XMLNS)?; element.no_more_content()?; Ok(Self) } } impl IntoElement for Disable { fn builder(&self) -> peanuts::ElementBuilder { Element::builder("disable", Some(XMLNS)) } } #[derive(Clone, Debug)] pub struct Enable; impl FromElement for Enable { fn from_element(element: Element) -> peanuts::DeserializeResult { element.check_name("enable")?; element.check_namespace(XMLNS)?; element.no_more_content()?; Ok(Self) } } impl IntoElement for Enable { fn builder(&self) -> peanuts::ElementBuilder { Element::builder("enable", Some(XMLNS)) } } #[derive(Clone, Debug)] pub struct Private; impl FromElement for Private { fn from_element(element: Element) -> peanuts::DeserializeResult { element.check_name("private")?; element.check_namespace(XMLNS)?; element.no_more_content()?; Ok(Self) } } impl IntoElement for Private { fn builder(&self) -> peanuts::ElementBuilder { Element::builder("private", Some(XMLNS)) } } #[derive(Clone, Debug)] pub struct Received { forwarded: Forwarded, } impl FromElement for Received { fn from_element(mut element: Element) -> peanuts::DeserializeResult { element.check_name("received")?; element.check_namespace(XMLNS)?; let forwarded = element.pop_child_one()?; Ok(Self { forwarded }) } } impl IntoElement for Received { fn builder(&self) -> peanuts::ElementBuilder { Element::builder("received", Some(XMLNS)).push_child(self.forwarded.clone()) } } #[derive(Clone, Debug)] pub struct Sent { forwarded: Forwarded, } impl FromElement for Sent { fn from_element(mut element: Element) -> peanuts::DeserializeResult { element.check_name("sent")?; element.check_namespace(XMLNS)?; let forwarded = element.pop_child_one()?; Ok(Self { forwarded }) } } impl IntoElement for Sent { fn builder(&self) -> peanuts::ElementBuilder { Element::builder("sent", Some(XMLNS)).push_child(self.forwarded.clone()) } }