1use serde::Deserialize;
3
4#[derive(Deserialize, Debug, Clone, PartialEq)]
5#[serde(rename_all = "camelCase")]
6pub struct AllGameData {
7 pub active_player: ActivePlayer,
8 pub all_players: Vec<Player>,
9 pub events: Events,
10 pub game_data: GameData,
11}
12
13#[derive(Deserialize, Debug, Clone, PartialEq)]
14#[serde(rename_all = "camelCase")]
15pub struct ActivePlayer {
16 pub abilities: Abilities,
17 pub champion_stats: ChampionStats,
18 pub current_gold: f64,
19 pub full_runes: FullRunes,
20 pub level: usize,
21 pub summoner_name: String,
22}
23
24#[derive(Deserialize, Debug, Clone, PartialEq)]
25#[serde(rename_all = "camelCase")]
26pub struct Player {
27 pub champion_name: String,
28 pub is_bot: bool,
29 pub is_dead: bool,
30 pub items: Vec<Item>,
31 pub level: usize,
32 pub position: String, pub raw_champion_name: String,
34 pub respawn_timer: f64,
35 pub runes: PartialRunes,
36 pub scores: Scores,
37 #[serde(rename = "skinID")]
38 pub skin_id: usize,
39 pub summoner_name: String,
40 pub summoner_spells: SummonerSpells,
41 pub team: Team,
42}
43
44#[derive(Deserialize, Debug, Clone, PartialEq)]
46#[serde(rename_all = "camelCase")]
47pub struct Item {}
48
49#[derive(Deserialize, Debug, Clone, PartialEq)]
50#[serde(rename_all = "camelCase")]
51pub struct Scores {
52 pub assists: usize,
53 pub creep_score: usize,
54 pub deaths: usize,
55 pub kills: usize,
56 pub ward_score: f64,
57}
58
59#[derive(Deserialize, Debug, Clone, PartialEq)]
60#[serde(rename_all = "camelCase")]
61pub struct SummonerSpells {
62 pub summoner_spell_one: SummonerSpell,
63 pub summoner_spell_two: SummonerSpell,
64}
65
66#[derive(Deserialize, Debug, Clone, PartialEq)]
67#[serde(rename_all = "camelCase")]
68pub struct SummonerSpell {
69 pub display_name: String,
70 pub raw_description: String,
71 pub raw_display_name: String,
72}
73
74#[derive(Deserialize, Debug, Clone, PartialEq)]
75pub enum Team {
76 #[serde(rename = "ORDER")]
77 Order,
78 #[serde(rename = "CHAOS")]
79 Chaos,
80}
81
82#[derive(Deserialize, Debug, Clone, PartialEq)]
83#[serde(rename_all = "camelCase")]
84pub struct Abilities {
85 #[serde(rename = "E")]
86 pub e: Ability,
87 #[serde(rename = "Passive")]
88 pub passive: Ability,
89 #[serde(rename = "Q")]
90 pub q: Ability,
91 #[serde(rename = "R")]
92 pub r: Ability,
93 #[serde(rename = "W")]
94 pub w: Ability,
95}
96
97#[derive(Deserialize, Debug, Clone, PartialEq)]
98#[serde(rename_all = "camelCase")]
99pub struct Ability {
100 pub ability_level: Option<u8>, pub display_name: String,
102 pub id: String,
103 pub raw_description: String,
104 pub raw_display_name: String,
105}
106
107#[derive(Deserialize, Debug, Clone, PartialEq)]
108#[serde(rename_all = "camelCase")]
109pub struct ChampionStats {
110 pub ability_power: f64, pub armor: f64,
112 pub armor_penetration_flat: f64,
113 pub attack_damage: f64,
114 pub attack_range: f64,
115 pub attack_speed: f64,
116 pub bonus_armor_penetration_percent: f64,
117 pub bonus_magic_penetration_percent: f64,
118 pub crit_chance: f64,
119 pub crit_damage: f64,
120 pub current_health: f64,
121 pub heal_shield_power: Option<f64>, pub health_regen_rate: f64,
123 pub life_steal: f64,
124 pub magic_lethality: f64,
125 pub magic_penetration_flat: f64,
126 pub magic_penetration_percent: f64,
127 pub magic_resist: f64,
128 pub max_health: f64,
129 pub move_speed: f64,
130 pub omnivamp: Option<f64>, pub physical_lethality: f64,
132 pub physical_vamp: Option<f64>, pub resource_max: f64,
134 pub resource_regen_rate: f64,
135 pub resource_type: String, pub resource_value: f64,
137 pub spell_vamp: f64,
138 pub tenacity: f64,
139}
140
141#[derive(Deserialize, Debug, Clone, PartialEq)]
143#[serde(rename_all = "camelCase")]
144pub struct FullRunes {
145 pub general_runes: Vec<Rune>,
146 pub keystone: Rune,
147 pub primary_rune_tree: RuneTree,
148 pub secondary_rune_tree: RuneTree,
149 pub stat_runes: [StatRunes; 3],
150}
151
152#[derive(Deserialize, Debug, Clone, PartialEq)]
154#[serde(rename_all = "camelCase")]
155pub struct PartialRunes {
156 pub keystone: Rune,
157 pub primary_rune_tree: RuneTree,
158 pub secondary_rune_tree: RuneTree,
159}
160
161#[derive(Deserialize, Debug, Clone, PartialEq)]
162#[serde(rename_all = "camelCase")]
163pub struct Rune {
164 pub display_name: String,
165 pub id: u16,
166 pub raw_description: String,
167 pub raw_display_name: String,
168}
169
170#[derive(Deserialize, Debug, Clone, PartialEq)]
171#[serde(rename_all = "camelCase")]
172pub struct RuneTree {
173 pub display_name: String,
174 pub id: u16,
175 pub raw_description: String,
176 pub raw_display_name: String,
177}
178
179#[derive(Deserialize, Debug, Clone, PartialEq)]
180#[serde(rename_all = "camelCase")]
181pub struct StatRunes {
182 pub id: u16,
183 pub raw_description: String,
184}
185
186#[derive(Deserialize, Debug, Clone, PartialEq)]
187#[serde(rename_all = "camelCase")]
188pub struct GameData {
189 pub game_mode: GameMode,
190 pub game_time: f64,
191 pub map_name: String,
192 pub map_number: usize,
193 pub map_terrain: String, }
195
196#[derive(Deserialize, Debug, Clone, PartialEq)]
197pub enum GameMode {
198 #[serde(rename = "CLASSIC")]
199 Classic,
200 #[serde(rename = "ARAM")]
201 Aram,
202}
203
204#[derive(Deserialize, Debug, Clone, PartialEq)]
205#[serde(tag = "EventName")]
206pub enum Event {
207 GameStart(GameStart),
208 GameEnd(GameEnd),
209 MinionsSpawning(MinionsSpawning),
210 FirstBrick(FirstBrick),
211 FirstBlood(FirstBlood),
212 TurretKilled(TurretKilled),
213 InhibKilled(InhibKilled),
214 InhibRespawningSoon(InhibRespawningSoon),
215 InhibRespawned(InhibRespawned),
216 DragonKill(DragonKill),
217 HeraldKill(HeraldKill),
218 BaronKill(BaronKill),
219 ChampionKill(ChampionKill),
220 Multikill(Multikill),
221 Ace(Ace),
222}
223
224#[derive(Deserialize, Debug, Clone, PartialEq)]
225pub struct GameStart {
226 #[serde(rename = "EventID")]
227 pub event_id: usize,
228 #[serde(rename = "EventTime")]
229 pub event_time: f64, }
231
232#[derive(Deserialize, Debug, Clone, PartialEq)]
233pub struct GameEnd {
234 #[serde(rename = "EventID")]
235 pub event_id: usize,
236 #[serde(rename = "EventTime")]
237 pub event_time: f64,
238 #[serde(rename = "Result")]
239 pub result: GameResult,
240}
241
242#[derive(Deserialize, Debug, Clone, PartialEq)]
243pub enum GameResult {
244 Win,
245 Loss,
246}
247
248#[derive(Deserialize, Debug, Clone, PartialEq)]
249pub struct MinionsSpawning {
250 #[serde(rename = "EventID")]
251 pub event_id: usize,
252 #[serde(rename = "EventTime")]
253 pub event_time: f64,
254}
255
256#[derive(Deserialize, Debug, Clone, PartialEq)]
257pub struct TurretKilled {
258 #[serde(rename = "EventID")]
259 pub event_id: usize,
260 #[serde(rename = "EventTime")]
261 pub event_time: f64,
262 #[serde(rename = "KillerName")]
263 pub killer_name: String,
264 #[serde(rename = "TurretKilled")]
265 pub turret_killed: String,
266 #[serde(rename = "Assisters")]
267 pub assisters: Vec<String>,
268}
269
270#[derive(Deserialize, Debug, Clone, PartialEq)]
271pub struct InhibKilled {
272 #[serde(rename = "EventID")]
273 pub event_id: usize,
274 #[serde(rename = "EventTime")]
275 pub event_time: f64,
276 #[serde(rename = "KillerName")]
277 pub killer_name: String,
278 #[serde(rename = "InhibKilled")]
279 pub inhib_killed: String,
280 #[serde(rename = "Assisters")]
281 pub assisters: Vec<String>,
282}
283
284#[derive(Deserialize, Debug, Clone, PartialEq)]
285pub struct InhibRespawningSoon {
286 #[serde(rename = "EventID")]
287 pub event_id: usize,
288 #[serde(rename = "EventTime")]
289 pub event_time: f64,
290 #[serde(rename = "InhibRespawningSoon")]
291 pub inhib_respawning_soon: String,
292}
293
294#[derive(Deserialize, Debug, Clone, PartialEq)]
295pub struct InhibRespawned {
296 #[serde(rename = "EventID")]
297 pub event_id: usize,
298 #[serde(rename = "EventTime")]
299 pub event_time: f64,
300 #[serde(rename = "InhibRespawned")]
301 pub inhib_respawned: String,
302}
303
304#[derive(Deserialize, Debug, Clone, PartialEq)]
305pub struct DragonKill {
306 #[serde(rename = "EventID")]
307 pub event_id: usize,
308 #[serde(rename = "EventTime")]
309 pub event_time: f64,
310 #[serde(rename = "KillerName")]
311 pub killer_name: String,
312 #[serde(rename = "Assisters")]
313 pub assisters: Vec<String>,
314 #[serde(rename = "DragonType")]
315 pub dragon_type: DragonType,
316 #[serde(rename = "Stolen")]
317 pub stolen: String,
318}
319
320#[derive(Deserialize, Debug, Clone, PartialEq)]
321pub struct FirstBrick {
322 #[serde(rename = "EventID")]
323 pub event_id: usize,
324 #[serde(rename = "EventTime")]
325 pub event_time: f64,
326 #[serde(rename = "KillerName")]
327 pub killer_name: String,
328}
329
330#[derive(Deserialize, Debug, Clone, PartialEq)]
331pub struct FirstBlood {
332 #[serde(rename = "EventID")]
333 pub event_id: usize,
334 #[serde(rename = "EventTime")]
335 pub event_time: f64,
336 #[serde(rename = "Recipient")]
337 pub recipient: String,
338}
339
340#[derive(Deserialize, Debug, Clone, PartialEq)]
341pub struct HeraldKill {
342 #[serde(rename = "EventID")]
343 pub event_id: usize,
344 #[serde(rename = "EventTime")]
345 pub event_time: f64,
346 #[serde(rename = "KillerName")]
347 pub killer_name: String,
348 #[serde(rename = "Assisters")]
349 pub assisters: Vec<String>,
350 #[serde(rename = "Stolen")]
351 pub stolen: String,
352}
353
354#[derive(Deserialize, Debug, Clone, PartialEq)]
355pub struct Ace {
356 #[serde(rename = "EventID")]
357 pub event_id: usize,
358 #[serde(rename = "EventTime")]
359 pub event_time: f64,
360 #[serde(rename = "Acer")]
361 pub acer: String,
362 #[serde(rename = "AcingTeam")]
363 pub acing_team: Team,
364}
365
366#[derive(Deserialize, Debug, Clone, PartialEq)]
367pub struct Multikill {
368 #[serde(rename = "EventID")]
369 pub event_id: usize,
370 #[serde(rename = "EventTime")]
371 pub event_time: f64,
372 #[serde(rename = "KillerName")]
373 pub killer_name: String,
374 #[serde(rename = "KillStreak")]
375 pub kill_streak: u8,
376}
377
378#[derive(Deserialize, Debug, Clone, PartialEq)]
379pub struct ChampionKill {
380 #[serde(rename = "EventID")]
381 pub event_id: usize,
382 #[serde(rename = "EventTime")]
383 pub event_time: f64,
384 #[serde(rename = "KillerName")]
385 pub killer_name: String,
386 #[serde(rename = "VictimName")]
387 pub victim_name: String,
388 #[serde(rename = "Assisters")]
389 pub assisters: Vec<String>,
390}
391
392#[derive(Deserialize, Debug, Clone, PartialEq)]
393pub struct BaronKill {
394 #[serde(rename = "EventID")]
395 pub event_id: usize,
396 #[serde(rename = "EventTime")]
397 pub event_time: f64,
398 #[serde(rename = "KillerName")]
399 pub killer_name: String,
400 #[serde(rename = "Assisters")]
401 pub assisters: Vec<String>,
402 #[serde(rename = "Stolen")]
403 pub stolen: String,
404}
405
406#[derive(Deserialize, Debug, Clone, PartialEq)]
407pub enum DragonType {
408 Elder,
409 Earth,
410 Cloud,
411 Fire,
412 Water,
413 Hextech,
414 Chemtech,
415}
416
417#[derive(Deserialize, Debug, Clone, PartialEq)]
418pub struct Events {
419 #[serde(rename = "Events")]
420 pub events: Vec<Event>,
421}