gewe_core/contact/
manage.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4#[serde(rename_all = "camelCase")]
5pub struct AddContactsRequest<'a> {
6    #[serde(rename = "appId")]
7    pub app_id: &'a str,
8    pub scene: i32,
9    pub option: i32,
10    pub v3: &'a str,
11    pub v4: &'a str,
12    pub content: &'a str,
13}
14
15pub type AddContactsResponse = ();
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(rename_all = "camelCase")]
19pub struct SetFriendRemarkRequest<'a> {
20    #[serde(rename = "appId")]
21    pub app_id: &'a str,
22    pub wxid: &'a str,
23    pub remark: &'a str,
24}
25
26pub type SetFriendRemarkResponse = ();
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct SetFriendPermissionsRequest<'a> {
31    #[serde(rename = "appId")]
32    pub app_id: &'a str,
33    pub wxid: &'a str,
34    #[serde(rename = "onlyChat")]
35    pub only_chat: bool,
36}
37
38pub type SetFriendPermissionsResponse = ();
39
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct UploadPhoneAddressListRequest<'a> {
43    #[serde(rename = "appId")]
44    pub app_id: &'a str,
45    pub phones: Vec<&'a str>,
46    #[serde(rename = "opType")]
47    pub op_type: i32,
48}
49
50pub type UploadPhoneAddressListResponse = ();
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(rename_all = "camelCase")]
54pub struct DeleteFriendRequest<'a> {
55    #[serde(rename = "appId")]
56    pub app_id: &'a str,
57    pub wxid: &'a str,
58}
59
60pub type DeleteFriendResponse = ();
61
62#[cfg(test)]
63mod tests {
64    use super::*;
65
66    #[test]
67    fn test_add_contacts_request_serialization() {
68        let req = AddContactsRequest {
69            app_id: "test_app",
70            scene: 1,
71            option: 2,
72            v3: "test_v3",
73            v4: "test_v4",
74            content: "Hello, add me!",
75        };
76        let json = serde_json::to_string(&req).unwrap();
77        assert!(json.contains("test_app"));
78        assert!(json.contains("Hello, add me!"));
79        assert!(json.contains("test_v3"));
80        assert!(json.contains("test_v4"));
81    }
82
83    #[test]
84    fn test_set_friend_remark_request_serialization() {
85        let req = SetFriendRemarkRequest {
86            app_id: "test_app",
87            wxid: "wxid_test",
88            remark: "My Best Friend",
89        };
90        let json = serde_json::to_string(&req).unwrap();
91        assert!(json.contains("test_app"));
92        assert!(json.contains("wxid_test"));
93        assert!(json.contains("My Best Friend"));
94    }
95
96    #[test]
97    fn test_set_friend_permissions_request_serialization() {
98        let req = SetFriendPermissionsRequest {
99            app_id: "test_app",
100            wxid: "wxid_test",
101            only_chat: true,
102        };
103        let json = serde_json::to_string(&req).unwrap();
104        assert!(json.contains("test_app"));
105        assert!(json.contains("wxid_test"));
106        assert!(json.contains("true"));
107    }
108
109    #[test]
110    fn test_upload_phone_address_list_request_serialization() {
111        let req = UploadPhoneAddressListRequest {
112            app_id: "test_app",
113            phones: vec!["12345678901", "12345678902"],
114            op_type: 1,
115        };
116        let json = serde_json::to_string(&req).unwrap();
117        assert!(json.contains("test_app"));
118        assert!(json.contains("12345678901"));
119        assert!(json.contains("12345678902"));
120    }
121
122    #[test]
123    fn test_delete_friend_request_serialization() {
124        let req = DeleteFriendRequest {
125            app_id: "test_app",
126            wxid: "wxid_test",
127        };
128        let json = serde_json::to_string(&req).unwrap();
129        assert!(json.contains("test_app"));
130        assert!(json.contains("wxid_test"));
131    }
132}