wx-sdk 0.0.9

A Wechat SDK written in Rust
Documentation
use crate::{
    mp::event::{xmlutil::get_text_from_root, ReceivedMessageParser},
    SdkResult,
};

pub struct ClickEvent {
    pub event_key: String,
}

impl ReceivedMessageParser for ClickEvent {
    type ReceivedMessage = ClickEvent;

    fn from_xml(node: &roxmltree::Node) -> SdkResult<Self::ReceivedMessage> {
        let event_key = get_text_from_root(node, "EventKey")?;
        Ok(ClickEvent {
            event_key: event_key.to_string(),
        })
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::SdkResult;
    #[test]
    pub fn parse() -> SdkResult<()> {
        use roxmltree::Document;
        let s = "<xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[FromUser]]></FromUserName>
    <CreateTime>123456789</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[CLICK]]></Event>
    <EventKey><![CDATA[EVENTKEY]]></EventKey>
  </xml>";
        let node = Document::parse(&s)?;
        let msg = ClickEvent::from_xml(&node.root())?;

        assert_eq!(msg.event_key, "EVENTKEY");
        Ok(())
    }
}