diff options
Diffstat (limited to 'src/stanza/client/mod.rs')
-rw-r--r-- | src/stanza/client/mod.rs | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/src/stanza/client/mod.rs b/src/stanza/client/mod.rs deleted file mode 100644 index 2b063d6..0000000 --- a/src/stanza/client/mod.rs +++ /dev/null @@ -1,61 +0,0 @@ -use iq::Iq; -use message::Message; -use peanuts::{ - element::{Content, ContentBuilder, FromContent, FromElement, IntoContent, IntoElement}, - DeserializeError, -}; -use presence::Presence; - -use super::stream::{self, Error as StreamError}; - -pub mod error; -pub mod iq; -pub mod message; -pub mod presence; - -pub const XMLNS: &str = "jabber:client"; - -pub enum Stanza { - Message(Message), - Presence(Presence), - Iq(Iq), - Error(StreamError), - OtherContent(Content), -} - -impl FromContent for Stanza { - fn from_content(content: Content) -> peanuts::element::DeserializeResult<Self> { - match content { - Content::Element(element) => Ok(Stanza::from_element(element)?), - Content::Text(_) => Ok(Stanza::OtherContent(content)), - Content::PI => Ok(Stanza::OtherContent(content)), - Content::Comment(_) => Ok(Stanza::OtherContent(content)), - } - } -} - -impl FromElement for Stanza { - fn from_element(element: peanuts::Element) -> peanuts::element::DeserializeResult<Self> { - match element.identify() { - (Some(XMLNS), "message") => Ok(Stanza::Message(Message::from_element(element)?)), - (Some(XMLNS), "presence") => Ok(Stanza::Presence(Presence::from_element(element)?)), - (Some(XMLNS), "iq") => Ok(Stanza::Iq(Iq::from_element(element)?)), - (Some(stream::XMLNS), "error") => { - Ok(Stanza::Error(StreamError::from_element(element)?)) - } - _ => Err(DeserializeError::UnexpectedElement(element)), - } - } -} - -impl IntoContent for Stanza { - fn builder(&self) -> peanuts::element::ContentBuilder { - match self { - Stanza::Message(message) => <Message as IntoContent>::builder(message), - Stanza::Presence(presence) => <Presence as IntoContent>::builder(presence), - Stanza::Iq(iq) => <Iq as IntoContent>::builder(iq), - Stanza::Error(error) => <StreamError as IntoContent>::builder(error), - Stanza::OtherContent(_content) => ContentBuilder::Comment("other-content".to_string()), - } - } -} |