lib.rs

 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;
15pub mod receipts;
16
17use minidom::Element;
18
19#[derive(Debug)]
20pub enum MessagePayload {
21    Body(body::Body),
22    ChatState(chatstates::ChatState),
23    Receipt(receipts::Receipt),
24}
25
26pub fn parse_message_payload(elem: &Element) -> Option<MessagePayload> {
27    if let Ok(body) = body::parse_body(elem) {
28        Some(MessagePayload::Body(body))
29    } else if let Ok(chatstate) = chatstates::parse_chatstate(elem) {
30        Some(MessagePayload::ChatState(chatstate))
31    } else if let Ok(receipt) = receipts::parse_receipt(elem) {
32        Some(MessagePayload::Receipt(receipt))
33    } else {
34        None
35    }
36}