1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize, Clone)]
4pub struct Avatar {
5 pub level: u32,
6 pub stat: String,
7 pub url: String,
8}
9
10#[derive(Debug, Serialize, Deserialize, Clone)]
11pub struct AvatarsStats {
12 pub mm_protoss_wins: WinStats,
13 pub mm_terran_wins: WinStats,
14 pub mm_zerg_wins: WinStats,
15}
16
17#[derive(Debug, Serialize, Deserialize, Clone)]
18pub struct GameResult {
19 pub attributes: GameResultAttributes,
20 pub benefactor_id: String,
21 pub create_time: String,
22 pub game_id: String,
23 pub gateway_id: u32,
24 pub match_guid: String,
25 pub players: Vec<Player>,
26}
27
28#[derive(Debug, Serialize, Deserialize, Clone)]
29pub struct GameResultAttributes {
30 pub client_version: String,
31 #[serde(rename = "mapName")]
32 pub map_name: String,
33 pub tileset: String,
34}
35
36#[derive(Debug, Serialize, Deserialize, Clone)]
37pub struct MatchmakedStats {
38 pub benefactor_id: String,
39 pub bucket: u32,
40 pub disconnects: u32,
41 pub game_mode_id: u32,
42 pub highest_points: u32,
43 pub highest_rating: u32,
44 pub loss_streak: u32,
45 pub losses: u32,
46 pub points: u32,
47 pub rating: u32,
48 pub season_id: u32,
49 pub toon: String,
50 pub toon_guid: u32,
51 pub win_streak: u32,
52 pub wins: u32,
53}
54
55#[derive(Debug, Serialize, Deserialize, Clone)]
56pub struct Player {
57 pub attributes: PlayerAttributes,
58 pub result: String,
59 pub stats: PlayerStats,
60 pub toon: String,
61}
62
63#[derive(Debug, Serialize, Deserialize, Clone)]
64pub struct PlayerAttributes {
65 #[serde(rename = "gPlayerData_idx")]
66 pub g_player_data_idx: String,
67 pub left: String,
68 pub race: Option<String>,
69 pub team: Option<String>,
70 pub r#type: String,
71}
72
73#[derive(Debug, Serialize, Deserialize, Clone)]
74pub struct PlayerStats {
75 pub zerg_apm: Option<String>,
76 pub zerg_games_played: Option<String>,
77 pub zerg_play_time: Option<String>,
78 pub zerg_resources_gas: Option<String>,
79 pub zerg_resources_minerals: Option<String>,
80 pub zerg_resources_score: Option<String>,
81 pub zerg_resources_spent: Option<String>,
82 pub zerg_score_overall: Option<String>,
83 pub zerg_structures_razed: Option<String>,
84 pub zerg_structures_lost: Option<String>,
85 pub zerg_structures_constructed: Option<String>,
86 pub zerg_structures_score: Option<String>,
87 pub zerg_units_killed: Option<String>,
88 pub zerg_units_lost: Option<String>,
89 pub zerg_units_produced: Option<String>,
90 pub zerg_units_score: Option<String>,
91 pub zerg_draws: Option<String>,
92 pub zerg_losses: Option<String>,
93 pub zerg_wins: Option<String>,
94 pub terran_apm: Option<String>,
95 pub terran_games_played: Option<String>,
96 pub terran_play_time: Option<String>,
97 pub terran_resources_gas: Option<String>,
98 pub terran_resources_minerals: Option<String>,
99 pub terran_resources_score: Option<String>,
100 pub terran_resources_spent: Option<String>,
101 pub terran_score_overall: Option<String>,
102 pub terran_structures_constructed: Option<String>,
103 pub terran_structures_lost: Option<String>,
104 pub terran_structures_razed: Option<String>,
105 pub terran_structures_score: Option<String>,
106 pub terran_units_killed: Option<String>,
107 pub terran_units_lost: Option<String>,
108 pub terran_units_produced: Option<String>,
109 pub terran_units_score: Option<String>,
110 pub terran_draws: Option<String>,
111 pub terran_losses: Option<String>,
112 pub terran_wins: Option<String>,
113 pub protoss_apm: Option<String>,
114 pub protoss_games_played: Option<String>,
115 pub protoss_play_time: Option<String>,
116 pub protoss_resources_gas: Option<String>,
117 pub protoss_resources_minerals: Option<String>,
118 pub protoss_resources_score: Option<String>,
119 pub protoss_resources_spent: Option<String>,
120 pub protoss_score_overall: Option<String>,
121 pub protoss_structures_constructed: Option<String>,
122 pub protoss_structures_lost: Option<String>,
123 pub protoss_structures_razed: Option<String>,
124 pub protoss_structures_score: Option<String>,
125 pub protoss_units_killed: Option<String>,
126 pub protoss_units_lost: Option<String>,
127 pub protoss_units_produced: Option<String>,
128 pub protoss_units_score: Option<String>,
129 pub protoss_draws: Option<String>,
130 pub protoss_losses: Option<String>,
131 pub protoss_wins: Option<String>,
132}
133
134#[derive(Debug, Serialize, Deserialize, Clone)]
135pub struct Profile {
136 pub avatar_id: String,
137 pub description: String,
138 pub private: bool,
139 pub show_avatar_frame: bool,
140 pub title: String,
141 pub toon: String,
142 pub toon_guid: u32,
143}
144
145#[derive(Debug, Serialize, Deserialize, Clone)]
146pub struct RawStats {
147 pub legacy_disconnects: u32,
148 pub legacy_losses: u32,
149 pub legacy_toon_creation_time: u32,
150 pub legacy_wins: u32,
151 pub protoss_apm_max: u32,
152 pub protoss_apm_min: u32,
153 pub protoss_apm_sum: u32,
154 pub protoss_disconnects_max: u32,
155 pub protoss_disconnects_min: u32,
156 pub protoss_disconnects_sum: u32,
157 pub protoss_draws_max: u32,
158 pub protoss_draws_min: u32,
159 pub protoss_draws_sum: u32,
160 pub protoss_losses_max: u32,
161 pub protoss_losses_min: u32,
162 pub protoss_losses_sum: u32,
163 pub protoss_play_time_max: u32,
164 pub protoss_play_time_min: u32,
165 pub protoss_play_time_sum: u32,
166 pub protoss_resources_gas_max: u32,
167 pub protoss_resources_gas_min: u32,
168 pub protoss_resources_gas_sum: u32,
169 pub protoss_resources_minerals_max: u32,
170 pub protoss_resources_minerals_min: u32,
171 pub protoss_resources_minerals_sum: u32,
172 pub protoss_resources_score_max: u32,
173 pub protoss_resources_score_min: u32,
174 pub protoss_resources_score_sum: u32,
175 pub protoss_resources_spent_max: u32,
176 pub protoss_resources_spent_min: u32,
177 pub protoss_resources_spent_sum: u32,
178 pub protoss_structures_constructed_max: u32,
179 pub protoss_structures_constructed_min: u32,
180 pub protoss_structures_constructed_sum: u32,
181 pub protoss_structures_lost_max: u32,
182 pub protoss_structures_lost_min: u32,
183 pub protoss_structures_lost_sum: u32,
184 pub protoss_structures_razed_max: u32,
185 pub protoss_structures_razed_min: u32,
186 pub protoss_structures_razed_sum: u32,
187 pub protoss_structures_score_max: u32,
188 pub protoss_structures_score_min: u32,
189 pub protoss_structures_score_sum: u32,
190 pub protoss_units_killed_max: u32,
191 pub protoss_units_killed_min: u32,
192 pub protoss_units_killed_sum: u32,
193 pub protoss_units_lost_max: u32,
194 pub protoss_units_lost_min: u32,
195 pub protoss_units_lost_sum: u32,
196 pub protoss_units_produced_max: u32,
197 pub protoss_units_produced_min: u32,
198 pub protoss_units_produced_sum: u32,
199 pub protoss_units_score_max: u32,
200 pub protoss_units_score_min: u32,
201 pub protoss_units_score_sum: u32,
202 pub protoss_wins_max: u32,
203 pub protoss_wins_min: u32,
204 pub protoss_wins_sum: u32,
205 pub terran_apm_max: u32,
206 pub terran_apm_min: u32,
207 pub terran_apm_sum: u32,
208 pub terran_disconnects_max: u32,
209 pub terran_disconnects_min: u32,
210 pub terran_disconnects_sum: u32,
211 pub terran_draws_max: u32,
212 pub terran_draws_min: u32,
213 pub terran_draws_sum: u32,
214 pub terran_losses_max: u32,
215 pub terran_losses_min: u32,
216 pub terran_losses_sum: u32,
217 pub terran_play_time_max: u32,
218 pub terran_play_time_min: u32,
219 pub terran_play_time_sum: u32,
220 pub terran_resources_gas_max: u32,
221 pub terran_resources_gas_min: u32,
222 pub terran_resources_gas_sum: u32,
223 pub terran_resources_minerals_max: u32,
224 pub terran_resources_minerals_min: u32,
225 pub terran_resources_minerals_sum: u32,
226 pub terran_resources_score_max: u32,
227 pub terran_resources_score_min: u32,
228 pub terran_resources_score_sum: u32,
229 pub terran_resources_spent_max: u32,
230 pub terran_resources_spent_min: u32,
231 pub terran_resources_spent_sum: u32,
232 pub terran_structures_constructed_max: u32,
233 pub terran_structures_constructed_min: u32,
234 pub terran_structures_constructed_sum: u32,
235 pub terran_structures_lost_max: u32,
236 pub terran_structures_lost_min: u32,
237 pub terran_structures_lost_sum: u32,
238 pub terran_structures_razed_max: u32,
239 pub terran_structures_razed_min: u32,
240 pub terran_structures_razed_sum: u32,
241 pub terran_structures_score_max: u32,
242 pub terran_structures_score_min: u32,
243 pub terran_structures_score_sum: u32,
244 pub terran_units_killed_max: u32,
245 pub terran_units_killed_min: u32,
246 pub terran_units_killed_sum: u32,
247 pub terran_units_lost_max: u32,
248 pub terran_units_lost_min: u32,
249 pub terran_units_lost_sum: u32,
250 pub terran_units_produced_max: u32,
251 pub terran_units_produced_min: u32,
252 pub terran_units_produced_sum: u32,
253 pub terran_units_score_max: u32,
254 pub terran_units_score_min: u32,
255 pub terran_units_score_sum: u32,
256 pub terran_wins_max: u32,
257 pub terran_wins_min: u32,
258 pub terran_wins_sum: u32,
259 pub zerg_apm_max: u32,
260 pub zerg_apm_min: u32,
261 pub zerg_apm_sum: u32,
262 pub zerg_disconnects_max: u32,
263 pub zerg_disconnects_min: u32,
264 pub zerg_disconnects_sum: u32,
265 pub zerg_draws_max: u32,
266 pub zerg_draws_min: u32,
267 pub zerg_draws_sum: u32,
268 pub zerg_losses_max: u32,
269 pub zerg_losses_min: u32,
270 pub zerg_losses_sum: u32,
271 pub zerg_play_time_max: u32,
272 pub zerg_play_time_min: u32,
273 pub zerg_play_time_sum: u32,
274 pub zerg_resources_gas_max: u32,
275 pub zerg_resources_gas_min: u32,
276 pub zerg_resources_gas_sum: u32,
277 pub zerg_resources_minerals_max: u32,
278 pub zerg_resources_minerals_min: u32,
279 pub zerg_resources_minerals_sum: u32,
280 pub zerg_resources_score_max: u32,
281 pub zerg_resources_score_min: u32,
282 pub zerg_resources_score_sum: u32,
283 pub zerg_resources_spent_max: u32,
284 pub zerg_resources_spent_min: u32,
285 pub zerg_resources_spent_sum: u32,
286 pub zerg_structures_constructed_max: u32,
287 pub zerg_structures_constructed_min: u32,
288 pub zerg_structures_constructed_sum: u32,
289 pub zerg_structures_lost_max: u32,
290 pub zerg_structures_lost_min: u32,
291 pub zerg_structures_lost_sum: u32,
292 pub zerg_structures_razed_max: u32,
293 pub zerg_structures_razed_min: u32,
294 pub zerg_structures_razed_sum: u32,
295 pub zerg_structures_score_max: u32,
296 pub zerg_structures_score_min: u32,
297 pub zerg_structures_score_sum: u32,
298 pub zerg_units_killed_max: u32,
299 pub zerg_units_killed_min: u32,
300 pub zerg_units_killed_sum: u32,
301 pub zerg_units_lost_max: u32,
302 pub zerg_units_lost_min: u32,
303 pub zerg_units_lost_sum: u32,
304 pub zerg_units_produced_max: u32,
305 pub zerg_units_produced_min: u32,
306 pub zerg_units_produced_sum: u32,
307 pub zerg_units_score_max: u32,
308 pub zerg_units_score_min: u32,
309 pub zerg_units_score_sum: u32,
310 pub zerg_wins_max: u32,
311 pub zerg_wins_min: u32,
312 pub zerg_wins_sum: u32,
313}
314
315#[derive(Debug, Serialize, Deserialize, Clone)]
316pub struct Replay {
317 pub attributes: ReplayAttributes,
318 pub create_time: u32,
319 pub link: String,
320}
321
322#[derive(Debug, Serialize, Deserialize, Clone)]
323pub struct ReplayAttributes {
324 pub game_creator: String,
325 pub game_id: String,
326 pub game_name: String,
327 pub game_save_id: String,
328 pub game_speed: String,
329 pub game_sub_type: String,
330 pub game_type: String,
331 pub map_era: String,
332 pub map_height: String,
333 pub map_title: String,
334 pub map_width: String,
335 pub replay_description: String,
336 pub replay_humans: String,
337 pub replay_map_number: String,
338 pub replay_max_players: String,
339 pub replay_min_players: String,
340 pub replay_opponents: String,
341 pub replay_player_names: String,
342 pub replay_player_races: String,
343 pub replay_player_types: String,
344 pub replay_result: String,
345}
346
347#[derive(Debug, Serialize, Deserialize, Clone)]
348pub struct Stat {
349 pub benefactor_id: String,
350 pub gateway_id: u32,
351 pub raw: RawStats,
352 pub season_id: u32,
353 pub toon: String,
354}
355
356#[derive(Debug, Serialize, Deserialize, Clone)]
357pub struct Toon {
358 pub games_last_week: u32,
359 pub gateway_id: u32,
360 pub guid: u32,
361 pub toon: String,
362}
363
364#[derive(Debug, Serialize, Deserialize, Clone)]
365pub struct WinStats {
366 pub bonus: f64,
367 pub normal: f64,
368 pub total: f64,
369}