diff --git a/src/presence.rs b/src/presence.rs index bb3334ef..ea2da4a3 100644 --- a/src/presence.rs +++ b/src/presence.rs @@ -9,12 +9,14 @@ use error::Error; use ns; +use status; use delay; use ecaps2; /// Lists every known payload of a ``. #[derive(Debug, Clone)] pub enum PresencePayload { + Status(status::Status), Delay(delay::Delay), ECaps2(ecaps2::ECaps2), } @@ -104,7 +106,9 @@ pub fn parse_presence(root: &Element) -> Result { }; let mut payloads = vec!(); for elem in root.children() { - let payload = if let Ok(delay) = delay::parse_delay(elem) { + let payload = if let Ok(status) = status::parse_status(elem) { + Some(PresencePayload::Status(status)) + } else if let Ok(delay) = delay::parse_delay(elem) { Some(PresencePayload::Delay(delay)) } else if let Ok(ecaps2) = ecaps2::parse_ecaps2(elem) { Some(PresencePayload::ECaps2(ecaps2)) @@ -127,6 +131,7 @@ pub fn parse_presence(root: &Element) -> Result { pub fn serialise_payload(payload: &PresencePayload) -> Element { match *payload { + PresencePayload::Status(ref status) => status::serialise(status), PresencePayload::Delay(ref delay) => delay::serialise(delay), PresencePayload::ECaps2(ref ecaps2) => ecaps2::serialise(ecaps2), }