wx-sdk 0.0.9

A Wechat SDK written in Rust
Documentation
#[cfg(test)]
mod tests {
    use std::collections::HashMap;

    use reqwest::blocking::get;
    use wx_sdk::{
        access_token::AccessTokenProvider,
        mp::reply::{Reply, Text},
        mp::{EncodingMode, ServerConfig},
        wechat::WxSdk,
        SdkResult, TokenClient,
    };

    fn get_sdk() -> WxSdk<TokenClient> {
        let wsdk = WxSdk::new_with_default_token_client("wx5823bf96d3bd56c7", "app_secret");
        wsdk
    }

    fn get_server_config() -> ServerConfig {
        let server_config = ServerConfig::new(
            "QDG6eK",
            EncodingMode::Security("jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C".to_owned()),
        );
        server_config
    }

    #[test]
    fn test_parse_event() {
        let mut url = HashMap::new();
        url.insert(
            "msg_signature".to_owned(),
            "477715d11cdb4164915debcba66cb864d751f3e6".to_owned(),
        );
        url.insert("timestamp".to_owned(), "1409659813".to_owned());
        url.insert("nonce".to_owned(), "1372623149".to_owned());
        let wsdk = get_sdk();
        let server_config = get_server_config();
        let mpsdk = wsdk.mp(server_config);
        let msg = "<xml><ToUserName><![CDATA[wx5823bf96d3bd56c7]]></ToUserName><Encrypt><![CDATA[RypEvHKD8QQKFhvQ6QleEB4J58tiPdvo+rtK1I9qca6aM/wvqnLSV5zEPeusUiX5L5X/0lWfrf0QADHHhGd3QczcdCUpj911L3vg3W/sYYvuJTs3TUUkSUXxaccAS0qhxchrRYt66wiSpGLYL42aM6A8dTT+6k4aSknmPj48kzJs8qLjvd4Xgpue06DOdnLxAUHzM6+kDZ+HMZfJYuR+LtwGc2hgf5gsijff0ekUNXZiqATP7PF5mZxZ3Izoun1s4zG4LUMnvw2r+KqCKIw+3IQH03v+BCA9nMELNqbSf6tiWSrXJB3LAVGUcallcrw8V2t9EL4EhzJWrQUax5wLVMNS0+rUPA3k22Ncx4XXZS9o0MBH27Bo6BpNelZpS+/uh9KsNlY6bHCmJU9p8g7m3fVKn28H3KDYA5Pl/T8Z1ptDAVe0lXdQ2YoyyH2uyPIGHBZZIs2pDBS8R07+qN+E7Q==]]></Encrypt></xml>";
        let event = mpsdk.parse_received_msg(msg, Some(url)).unwrap();

        assert_eq!(event.msg_type, "text".to_owned());
    }

    #[test]
    fn test_encrypt_msg() -> SdkResult<()> {
        let sdk = get_sdk();
        let server_config = get_server_config();
        let sdk = sdk.mp(server_config);
        let mut url = HashMap::new();
        // url.insert(
        //     "msg_signature".to_owned(),
        //     "477715d11cdb4164915debcba66cb864d751f3e6".to_owned(),
        // );
        url.insert("timestamp".to_owned(), "1409659813".to_owned());
        url.insert("nonce".to_owned(), "1372623149".to_owned());
        let reply = Reply::Text(Text {
            content: "你好".to_owned(),
        });
        let reply_xml = sdk.reply_to_xml(
            reply,
            "wx5823bf96d3bd56c7",
            "oia2TjjewbmiOUlr6X-1crbLOvLw",
            Some(url.clone()),
        )?;
        let doc = exile::parse(reply_xml.clone()).unwrap();
        let elem = doc.root().child("MsgSignature").unwrap();
        // url.insert("msg_signature".to_owned(), elem.text().unwrap());
        // let event = sdk.parse_received_msg(reply_xml, Some(url)).unwrap();

        Ok(())
    }

    // #[test]
    // fn test_base_64() -> Result<(), Box<dyn std::error::Error>> {
    //     use base64ct::{Base64, Encoding};
    //     let txt = "jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C=";
    //     let result = Base64::decode_vec(txt);
    //     let input = "B2C=";
    //     let mut buf = [0u8; 1024];
    //     assert!(Base64::decode(input, &mut buf).is_err());
    //     assert_eq!(wx_sdk::mp::event::base64::decode(input).unwrap(), vec![1u8]);
    //     assert!(result.is_err());
    //     Ok(())
    // }
}