1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4#[serde(rename_all = "camelCase")]
5pub struct SendTextRequest<'a> {
6 #[serde(rename = "appId")]
7 pub app_id: &'a str,
8 #[serde(rename = "toWxid")]
9 pub to_wxid: &'a str,
10 pub content: &'a str,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub ats: Option<&'a str>,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize, Default)]
16#[serde(rename_all = "camelCase")]
17pub struct SendTextResponse {
18 pub to_wxid: String,
19 pub create_time: i64,
20 pub msg_id: i64,
21 pub new_msg_id: i64,
22 #[serde(rename = "type")]
23 pub msg_type: i32,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(rename_all = "camelCase")]
28pub struct PostImageRequest<'a> {
29 #[serde(rename = "appId")]
30 pub app_id: &'a str,
31 #[serde(rename = "toWxid")]
32 pub to_wxid: &'a str,
33 #[serde(rename = "imgUrl")]
34 pub img_url: &'a str,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize, Default)]
38#[serde(rename_all = "camelCase")]
39pub struct PostImageResponse {
40 pub to_wxid: String,
41 pub create_time: i64,
42 pub msg_id: i64,
43 pub new_msg_id: i64,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub r#type: Option<i32>,
46 pub aes_key: String,
47 pub file_id: String,
48 pub length: i64,
49 pub width: i64,
50 pub height: i64,
51 pub md5: String,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
55#[serde(rename_all = "camelCase")]
56pub struct PostVoiceRequest<'a> {
57 #[serde(rename = "appId")]
58 pub app_id: &'a str,
59 #[serde(rename = "toWxid")]
60 pub to_wxid: &'a str,
61 #[serde(rename = "voiceUrl")]
62 pub voice_url: &'a str,
63 #[serde(rename = "voiceDuration")]
64 pub voice_duration: i64,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize, Default)]
68#[serde(rename_all = "camelCase")]
69pub struct PostVoiceResponse {
70 pub to_wxid: String,
71 pub create_time: i64,
72 pub msg_id: i64,
73 pub new_msg_id: i64,
74 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
75 pub msg_type: Option<i32>,
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize)]
79#[serde(rename_all = "camelCase")]
80pub struct PostVideoRequest<'a> {
81 #[serde(rename = "appId")]
82 pub app_id: &'a str,
83 #[serde(rename = "toWxid")]
84 pub to_wxid: &'a str,
85 #[serde(rename = "videoUrl")]
86 pub video_url: &'a str,
87 #[serde(rename = "thumbUrl")]
88 pub thumb_url: &'a str,
89 #[serde(rename = "videoDuration")]
90 pub video_duration: i64,
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize, Default)]
94#[serde(rename_all = "camelCase")]
95pub struct PostVideoResponse {
96 pub to_wxid: String,
97 #[serde(default, skip_serializing_if = "Option::is_none")]
98 pub create_time: Option<i64>,
99 pub msg_id: i64,
100 pub new_msg_id: i64,
101 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
102 pub msg_type: Option<i32>,
103 pub aes_key: String,
104 pub file_id: String,
105 pub length: i64,
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize)]
109#[serde(rename_all = "camelCase")]
110pub struct PostFileRequest<'a> {
111 #[serde(rename = "appId")]
112 pub app_id: &'a str,
113 #[serde(rename = "toWxid")]
114 pub to_wxid: &'a str,
115 #[serde(rename = "fileUrl")]
116 pub file_url: &'a str,
117 #[serde(rename = "fileName")]
118 pub file_name: &'a str,
119}
120
121pub type PostFileResponse = SendTextResponse;
122
123#[derive(Debug, Clone, Serialize, Deserialize)]
124#[serde(rename_all = "camelCase")]
125pub struct PostLinkRequest<'a> {
126 #[serde(rename = "appId")]
127 pub app_id: &'a str,
128 #[serde(rename = "toWxid")]
129 pub to_wxid: &'a str,
130 pub title: &'a str,
131 pub desc: &'a str,
132 #[serde(rename = "linkUrl")]
133 pub link_url: &'a str,
134 #[serde(rename = "thumbUrl")]
135 pub thumb_url: &'a str,
136}
137
138pub type PostLinkResponse = SendTextResponse;
139
140#[derive(Debug, Clone, Serialize, Deserialize)]
141#[serde(rename_all = "camelCase")]
142pub struct PostEmojiRequest<'a> {
143 #[serde(rename = "appId")]
144 pub app_id: &'a str,
145 #[serde(rename = "toWxid")]
146 pub to_wxid: &'a str,
147 #[serde(rename = "emojiMd5")]
148 pub emoji_md5: &'a str,
149 #[serde(rename = "emojiSize")]
150 pub emoji_size: i64,
151}
152
153#[derive(Debug, Clone, Serialize, Deserialize, Default)]
154#[serde(rename_all = "camelCase")]
155pub struct PostEmojiResponse {
156 pub to_wxid: String,
157 pub create_time: i64,
158 pub msg_id: i64,
159 pub new_msg_id: i64,
160 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
161 pub msg_type: Option<i32>,
162}
163
164#[derive(Debug, Clone, Serialize, Deserialize)]
165#[serde(rename_all = "camelCase")]
166pub struct PostAppMsgRequest<'a> {
167 #[serde(rename = "appId")]
168 pub app_id: &'a str,
169 #[serde(rename = "toWxid")]
170 pub to_wxid: &'a str,
171 pub appmsg: &'a str,
172}
173
174pub type PostAppMsgResponse = SendTextResponse;
175
176#[derive(Debug, Clone, Serialize, Deserialize)]
177#[serde(rename_all = "camelCase")]
178pub struct PostMiniAppRequest<'a> {
179 #[serde(rename = "appId")]
180 pub app_id: &'a str,
181 #[serde(rename = "toWxid")]
182 pub to_wxid: &'a str,
183 #[serde(rename = "miniAppId")]
184 pub mini_app_id: &'a str,
185 #[serde(rename = "displayName")]
186 pub display_name: &'a str,
187 #[serde(rename = "pagePath")]
188 pub page_path: &'a str,
189 #[serde(rename = "coverImgUrl")]
190 pub cover_img_url: &'a str,
191 pub title: &'a str,
192 #[serde(rename = "userName")]
193 pub user_name: &'a str,
194}
195
196pub type PostMiniAppResponse = SendTextResponse;
197
198#[derive(Debug, Clone, Serialize, Deserialize)]
199#[serde(rename_all = "camelCase")]
200pub struct PostNameCardRequest<'a> {
201 #[serde(rename = "appId")]
202 pub app_id: &'a str,
203 #[serde(rename = "toWxid")]
204 pub to_wxid: &'a str,
205 #[serde(rename = "nickName")]
206 pub nick_name: &'a str,
207 #[serde(rename = "nameCardWxid")]
208 pub name_card_wxid: &'a str,
209}
210
211pub type PostNameCardResponse = SendTextResponse;