gewe_core/contact/
manage.rs1use 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}