gewe_http/message/
revoke.rs

1use crate::client::GeweHttpClient;
2use gewe_core::{GeweError, RevokeMessageRequest};
3use tracing::instrument;
4
5impl GeweHttpClient {
6    #[instrument(skip(self))]
7    pub async fn revoke_message(
8        &self,
9        app_id: &str,
10        to_wxid: &str,
11        msg_id: &str,
12        new_msg_id: &str,
13        create_time: &str,
14    ) -> Result<(), GeweError> {
15        let body = RevokeMessageRequest {
16            app_id,
17            to_wxid,
18            msg_id,
19            new_msg_id,
20            create_time,
21        };
22        let _ = self
23            .post_api::<_, ()>("gewe/v2/api/message/revokeMsg", &body)
24            .await?;
25        Ok(())
26    }
27}
28
29#[cfg(test)]
30mod tests {
31    use super::*;
32
33    #[test]
34    fn test_revoke_message_request_serialization() {
35        let req = RevokeMessageRequest {
36            app_id: "test_app",
37            to_wxid: "recipient_wxid",
38            msg_id: "msg_123456",
39            new_msg_id: "new_msg_123456",
40            create_time: "1234567890",
41        };
42        let json = serde_json::to_string(&req).expect("Failed to serialize");
43        assert!(json.contains("appId"));
44        assert!(json.contains("toWxid"));
45        assert!(json.contains("msgId"));
46        assert!(json.contains("newMsgId"));
47        assert!(json.contains("createTime"));
48    }
49}