1extern crate minidom;
2
3pub mod error;
4pub mod ns;
5
6pub mod body;
7pub mod disco;
8pub mod data_forms;
9pub mod media_element;
10pub mod ecaps2;
11pub mod jingle;
12pub mod ping;
13pub mod chatstates;
14pub mod ibb;
15
16use minidom::Element;
17
18#[derive(Debug)]
19pub enum MessagePayload {
20 Body(body::Body),
21 ChatState(chatstates::ChatState),
22}
23
24pub fn parse_message_payload(elem: &Element) -> Option<MessagePayload> {
25 if let Ok(body) = body::parse_body(elem) {
26 Some(MessagePayload::Body(body))
27 } else if let Ok(chatstate) = chatstates::parse_chatstate(elem) {
28 Some(MessagePayload::ChatState(chatstate))
29 } else {
30 None
31 }
32}