1use super::utils::*;
2use serde::Deserialize;
3
4#[derive(Deserialize, Debug, Clone)]
5#[serde(tag = "type")]
6pub enum ReceiveSegment {
7 #[serde(rename = "text")]
8 Text { data: TextData },
9
10 #[serde(rename = "face")]
11 Face { data: FaceData },
12
13 #[serde(rename = "image")]
14 Image { data: ImageData },
15
16 #[serde(rename = "record")]
17 Record { data: RecordData },
18
19 #[serde(rename = "video")]
20 Video { data: VideoData },
21
22 #[serde(rename = "at")]
23 At { data: AtData },
24
25 #[serde(rename = "rps")]
26 Rps { data: RpsData },
27
28 #[serde(rename = "dice")]
29 Dice { data: DiceData },
30
31 #[serde(rename = "shake")]
32 Shake { data: ShakeData },
33
34 #[serde(rename = "poke")]
35 Poke { data: PokeData },
36
37 #[serde(rename = "anonymous")]
38 Anonymous { data: AnonymousData },
39
40 #[serde(rename = "share")]
41 Share { data: ShareData },
42
43 #[serde(rename = "contact")]
44 Contact { data: ContactData },
45
46 #[serde(rename = "location")]
47 Location { data: LocationData },
48
49 #[serde(rename = "music")]
50 Music { data: MusicData },
51
52 #[serde(rename = "reply")]
53 Reply { data: ReplyData },
54
55 #[serde(rename = "forward")]
56 Forward { data: ForwardData },
57
58 #[serde(rename = "node")]
59 Node { data: NodeData },
60
61 #[serde(rename = "xml")]
62 Xml { data: XmlData },
63
64 #[serde(rename = "json")]
65 Json { data: JsonData },
66}
67
68#[derive(Deserialize, Debug, Clone)]
69pub struct TextData {
70 pub text: String,
73}
74
75#[derive(Deserialize, Debug, Clone)]
76pub struct FaceData {
77 pub id: String,
82}
83
84#[derive(Deserialize, Debug, Clone)]
85pub struct ImageData {
86 pub file: String,
89 #[serde(rename = "type")]
90 pub image_type: Option<ImageType>,
95 pub url: String,
98}
99
100#[derive(Deserialize, Debug, Clone)]
101pub struct RecordData {
102 pub file: String,
105 pub magic: String,
110 pub url: String,
113}
114
115#[derive(Deserialize, Debug, Clone)]
116pub struct VideoData {
117 pub file: String,
120 pub url: String,
123}
124
125#[derive(Deserialize, Debug, Clone)]
126pub struct AtData {
127 pub qq: AtType,
132}
133
134#[derive(Deserialize, Debug, Clone)]
135pub struct RpsData {}
136
137#[derive(Deserialize, Debug, Clone)]
138pub struct DiceData {}
139
140#[derive(Deserialize, Debug, Clone)]
141pub struct ShakeData {}
142
143#[derive(Deserialize, Debug, Clone)]
144pub struct PokeData {
145 #[serde(rename = "type")]
146 pub poke_type: String,
151 pub id: String,
156 pub name: String,
161}
162
163#[derive(Deserialize, Debug, Clone)]
164pub struct AnonymousData {}
165
166#[derive(Deserialize, Debug, Clone)]
167pub struct ShareData {
168 pub url: String,
171 pub title: String,
174 pub content: String,
177 pub image: String,
180}
181
182#[derive(Deserialize, Debug, Clone)]
183pub struct ContactData {
184 #[serde(rename = "type")]
185 pub contact_type: ContactType,
188 pub id: String,
191}
192
193#[derive(Deserialize, Debug, Clone)]
194pub struct LocationData {
195 pub lat: String,
198 pub lon: String,
201 pub title: String,
204 pub content: String,
207}
208
209#[derive(Deserialize, Debug, Clone)]
210pub struct MusicData {}
211
212#[derive(Deserialize, Debug, Clone)]
213pub struct ReplyData {
214 pub id: String,
217}
218
219#[derive(Deserialize, Debug, Clone)]
220pub struct ForwardData {
221 pub id: String,
224}
225
226#[derive(Deserialize, Debug, Clone)]
227pub struct NodeData {
228 pub user_id: String,
231 pub nickname: String,
234 pub content: Vec<ReceiveSegment>,
237}
238
239#[derive(Deserialize, Debug, Clone)]
240pub struct XmlData {
241 pub data: String,
244}
245
246#[derive(Deserialize, Debug, Clone)]
247pub struct JsonData {
248 pub data: String,
251}