1use serde_derive::{Deserialize, Serialize};
2use serde_json::Value;
3use std::{collections::HashMap, fmt};
4
5#[derive(Debug)]
6pub enum BlitzError {
7 RateLimited,
8 SummonerNotFound,
9 BadJson,
10 BadStatuscode(u16),
11 RequestError(Option<String>),
12 Forbidden,
13 NotFound,
14 InvalidRegion,
15}
16
17#[allow(non_snake_case)]
18#[derive(Debug, Deserialize, Serialize)]
19pub struct Summoner {
20 pub id: String,
21
22 #[serde(rename = "accountId")]
23 pub account_id: String,
24
25 pub puuid: String,
26 pub name: String,
27
28 #[serde(rename = "profileIconId")]
29 pub profile_icon_id: u32,
30
31 #[serde(rename = "revisionDate")]
32 pub revision_date: i64,
33
34 #[serde(rename = "summonerLevel")]
35 pub summoner_level: u32,
36}
37
38pub enum GameType {
39 RANKED,
40 NORMAL,
41 TOURNEY,
42 TUTORIAL,
43}
44pub struct GetMatchIdsOpts {
45 pub start_time: Option<u64>,
46 pub end_time: Option<u64>,
47 pub queue: Option<i16>,
48 pub game_type: Option<GameType>,
49 pub start: Option<i16>,
50 pub count: Option<u8>,
51}
52
53#[derive(Serialize, Deserialize)]
54pub struct Match {
55 #[serde(rename = "metadata")]
56 pub metadata: Metadata,
57
58 #[serde(rename = "info")]
59 pub info: Info,
60}
61
62#[derive(Serialize, Deserialize)]
63pub struct Info {
64 #[serde(rename = "gameCreation")]
65 pub game_creation: i64,
66
67 #[serde(rename = "gameDuration")]
68 pub game_duration: i64,
69
70 #[serde(rename = "gameEndTimestamp")]
71 pub game_end_timestamp: i64,
72
73 #[serde(rename = "gameId")]
74 pub game_id: i64,
75
76 #[serde(rename = "gameMode")]
77 pub game_mode: String,
78
79 #[serde(rename = "gameName")]
80 pub game_name: String,
81
82 #[serde(rename = "gameStartTimestamp")]
83 pub game_start_timestamp: i64,
84
85 #[serde(rename = "gameType")]
86 pub game_type: String,
87
88 #[serde(rename = "gameVersion")]
89 pub game_version: String,
90
91 #[serde(rename = "mapId")]
92 pub map_id: i64,
93
94 #[serde(rename = "participants")]
95 pub participants: Vec<Participant>,
96
97 #[serde(rename = "platformId")]
98 pub platform_id: String,
99
100 #[serde(rename = "queueId")]
101 pub queue_id: i64,
102
103 #[serde(rename = "teams")]
104 pub teams: Vec<Team>,
105
106 #[serde(rename = "tournamentCode")]
107 pub tournament_code: String,
108}
109
110#[derive(Clone, Serialize, Deserialize)]
111pub struct Participant {
112 #[serde(rename = "allInPings")]
113 pub all_in_pings: i64,
114
115 #[serde(rename = "assistMePings")]
116 pub assist_me_pings: i64,
117
118 #[serde(rename = "assists")]
119 pub assists: i64,
120
121 #[serde(rename = "baitPings")]
122 pub bait_pings: i64,
123
124 #[serde(rename = "baronKills")]
125 pub baron_kills: i64,
126
127 #[serde(rename = "basicPings")]
128 pub basic_pings: i64,
129
130 #[serde(rename = "bountyLevel")]
131 pub bounty_level: i64,
132
133 #[serde(rename = "challenges")]
134 pub challenges: HashMap<String, f64>,
135
136 #[serde(rename = "champExperience")]
137 pub champ_experience: i64,
138
139 #[serde(rename = "champLevel")]
140 pub champ_level: i64,
141
142 #[serde(rename = "championId")]
143 pub champion_id: i64,
144
145 #[serde(rename = "championName")]
146 pub champion_name: String,
147
148 #[serde(rename = "championTransform")]
149 pub champion_transform: i64,
150
151 #[serde(rename = "commandPings")]
152 pub command_pings: i64,
153
154 #[serde(rename = "consumablesPurchased")]
155 pub consumables_purchased: i64,
156
157 #[serde(rename = "damageDealtToBuildings")]
158 pub damage_dealt_to_buildings: i64,
159
160 #[serde(rename = "damageDealtToObjectives")]
161 pub damage_dealt_to_objectives: i64,
162
163 #[serde(rename = "damageDealtToTurrets")]
164 pub damage_dealt_to_turrets: i64,
165
166 #[serde(rename = "damageSelfMitigated")]
167 pub damage_self_mitigated: i64,
168
169 #[serde(rename = "dangerPings")]
170 pub danger_pings: i64,
171
172 #[serde(rename = "deaths")]
173 pub deaths: i64,
174
175 #[serde(rename = "detectorWardsPlaced")]
176 pub detector_wards_placed: i64,
177
178 #[serde(rename = "doubleKills")]
179 pub double_kills: i64,
180
181 #[serde(rename = "dragonKills")]
182 pub dragon_kills: i64,
183
184 #[serde(rename = "eligibleForProgression")]
185 pub eligible_for_progression: bool,
186
187 #[serde(rename = "enemyMissingPings")]
188 pub enemy_missing_pings: i64,
189
190 #[serde(rename = "enemyVisionPings")]
191 pub enemy_vision_pings: i64,
192
193 #[serde(rename = "firstBloodAssist")]
194 pub first_blood_assist: bool,
195
196 #[serde(rename = "firstBloodKill")]
197 pub first_blood_kill: bool,
198
199 #[serde(rename = "firstTowerAssist")]
200 pub first_tower_assist: bool,
201
202 #[serde(rename = "firstTowerKill")]
203 pub first_tower_kill: bool,
204
205 #[serde(rename = "gameEndedInEarlySurrender")]
206 pub game_ended_in_early_surrender: bool,
207
208 #[serde(rename = "gameEndedInSurrender")]
209 pub game_ended_in_surrender: bool,
210
211 #[serde(rename = "getBackPings")]
212 pub get_back_pings: i64,
213
214 #[serde(rename = "goldEarned")]
215 pub gold_earned: i64,
216
217 #[serde(rename = "goldSpent")]
218 pub gold_spent: i64,
219
220 #[serde(rename = "holdPings")]
221 pub hold_pings: i64,
222
223 #[serde(rename = "individualPosition")]
224 pub individual_position: String,
225
226 #[serde(rename = "inhibitorKills")]
227 pub inhibitor_kills: i64,
228
229 #[serde(rename = "inhibitorTakedowns")]
230 pub inhibitor_takedowns: i64,
231
232 #[serde(rename = "inhibitorsLost")]
233 pub inhibitors_lost: i64,
234
235 #[serde(rename = "item0")]
236 pub item0: i64,
237
238 #[serde(rename = "item1")]
239 pub item1: i64,
240
241 #[serde(rename = "item2")]
242 pub item2: i64,
243
244 #[serde(rename = "item3")]
245 pub item3: i64,
246
247 #[serde(rename = "item4")]
248 pub item4: i64,
249
250 #[serde(rename = "item5")]
251 pub item5: i64,
252
253 #[serde(rename = "item6")]
254 pub item6: i64,
255
256 #[serde(rename = "itemsPurchased")]
257 pub items_purchased: i64,
258
259 #[serde(rename = "killingSprees")]
260 pub killing_sprees: i64,
261
262 #[serde(rename = "kills")]
263 pub kills: i64,
264
265 #[serde(rename = "lane")]
266 pub lane: String,
267
268 #[serde(rename = "largestCriticalStrike")]
269 pub largest_critical_strike: i64,
270
271 #[serde(rename = "largestKillingSpree")]
272 pub largest_killing_spree: i64,
273
274 #[serde(rename = "largestMultiKill")]
275 pub largest_multi_kill: i64,
276
277 #[serde(rename = "longestTimeSpentLiving")]
278 pub longest_time_spent_living: i64,
279
280 #[serde(rename = "magicDamageDealt")]
281 pub magic_damage_dealt: i64,
282
283 #[serde(rename = "magicDamageDealtToChampions")]
284 pub magic_damage_dealt_to_champions: i64,
285
286 #[serde(rename = "magicDamageTaken")]
287 pub magic_damage_taken: i64,
288
289 #[serde(rename = "needVisionPings")]
290 pub need_vision_pings: i64,
291
292 #[serde(rename = "neutralMinionsKilled")]
293 pub neutral_minions_killed: i64,
294
295 #[serde(rename = "nexusKills")]
296 pub nexus_kills: i64,
297
298 #[serde(rename = "nexusLost")]
299 pub nexus_lost: i64,
300
301 #[serde(rename = "nexusTakedowns")]
302 pub nexus_takedowns: i64,
303
304 #[serde(rename = "objectivesStolen")]
305 pub objectives_stolen: i64,
306
307 #[serde(rename = "objectivesStolenAssists")]
308 pub objectives_stolen_assists: i64,
309
310 #[serde(rename = "onMyWayPings")]
311 pub on_my_way_pings: i64,
312
313 #[serde(rename = "participantId")]
314 pub participant_id: i64,
315
316 #[serde(rename = "pentaKills")]
317 pub penta_kills: i64,
318
319 #[serde(rename = "perks")]
320 pub perks: Perks,
321
322 #[serde(rename = "physicalDamageDealt")]
323 pub physical_damage_dealt: i64,
324
325 #[serde(rename = "physicalDamageDealtToChampions")]
326 pub physical_damage_dealt_to_champions: i64,
327
328 #[serde(rename = "physicalDamageTaken")]
329 pub physical_damage_taken: i64,
330
331 #[serde(rename = "profileIcon")]
332 pub profile_icon: i64,
333
334 #[serde(rename = "pushPings")]
335 pub push_pings: i64,
336
337 #[serde(rename = "puuid")]
338 pub puuid: String,
339
340 #[serde(rename = "quadraKills")]
341 pub quadra_kills: i64,
342
343 #[serde(rename = "riotIdName")]
344 pub riot_id_name: String,
345
346 #[serde(rename = "riotIdTagline")]
347 pub riot_id_tagline: String,
348
349 #[serde(rename = "role")]
350 pub role: String,
351
352 #[serde(rename = "sightWardsBoughtInGame")]
353 pub sight_wards_bought_in_game: i64,
354
355 #[serde(rename = "spell1Casts")]
356 pub spell1_casts: i64,
357
358 #[serde(rename = "spell2Casts")]
359 pub spell2_casts: i64,
360
361 #[serde(rename = "spell3Casts")]
362 pub spell3_casts: i64,
363
364 #[serde(rename = "spell4Casts")]
365 pub spell4_casts: i64,
366
367 #[serde(rename = "summoner1Casts")]
368 pub summoner1_casts: i64,
369
370 #[serde(rename = "summoner1Id")]
371 pub summoner1_id: i64,
372
373 #[serde(rename = "summoner2Casts")]
374 pub summoner2_casts: i64,
375
376 #[serde(rename = "summoner2Id")]
377 pub summoner2_id: i64,
378
379 #[serde(rename = "summonerId")]
380 pub summoner_id: String,
381
382 #[serde(rename = "summonerLevel")]
383 pub summoner_level: i64,
384
385 #[serde(rename = "summonerName")]
386 pub summoner_name: String,
387
388 #[serde(rename = "teamEarlySurrendered")]
389 pub team_early_surrendered: bool,
390
391 #[serde(rename = "teamId")]
392 pub team_id: i64,
393
394 #[serde(rename = "teamPosition")]
395 pub team_position: String,
396
397 #[serde(rename = "timeCCingOthers")]
398 pub time_c_cing_others: i64,
399
400 #[serde(rename = "timePlayed")]
401 pub time_played: i64,
402
403 #[serde(rename = "totalDamageDealt")]
404 pub total_damage_dealt: i64,
405
406 #[serde(rename = "totalDamageDealtToChampions")]
407 pub total_damage_dealt_to_champions: i64,
408
409 #[serde(rename = "totalDamageShieldedOnTeammates")]
410 pub total_damage_shielded_on_teammates: i64,
411
412 #[serde(rename = "totalDamageTaken")]
413 pub total_damage_taken: i64,
414
415 #[serde(rename = "totalHeal")]
416 pub total_heal: i64,
417
418 #[serde(rename = "totalHealsOnTeammates")]
419 pub total_heals_on_teammates: i64,
420
421 #[serde(rename = "totalMinionsKilled")]
422 pub total_minions_killed: i64,
423
424 #[serde(rename = "totalTimeCCDealt")]
425 pub total_time_cc_dealt: i64,
426
427 #[serde(rename = "totalTimeSpentDead")]
428 pub total_time_spent_dead: i64,
429
430 #[serde(rename = "totalUnitsHealed")]
431 pub total_units_healed: i64,
432
433 #[serde(rename = "tripleKills")]
434 pub triple_kills: i64,
435
436 #[serde(rename = "trueDamageDealt")]
437 pub true_damage_dealt: i64,
438
439 #[serde(rename = "trueDamageDealtToChampions")]
440 pub true_damage_dealt_to_champions: i64,
441
442 #[serde(rename = "trueDamageTaken")]
443 pub true_damage_taken: i64,
444
445 #[serde(rename = "turretKills")]
446 pub turret_kills: i64,
447
448 #[serde(rename = "turretTakedowns")]
449 pub turret_takedowns: i64,
450
451 #[serde(rename = "turretsLost")]
452 pub turrets_lost: i64,
453
454 #[serde(rename = "unrealKills")]
455 pub unreal_kills: i64,
456
457 #[serde(rename = "visionClearedPings")]
458 pub vision_cleared_pings: i64,
459
460 #[serde(rename = "visionScore")]
461 pub vision_score: i64,
462
463 #[serde(rename = "visionWardsBoughtInGame")]
464 pub vision_wards_bought_in_game: i64,
465
466 #[serde(rename = "wardsKilled")]
467 pub wards_killed: i64,
468
469 #[serde(rename = "wardsPlaced")]
470 pub wards_placed: i64,
471
472 #[serde(rename = "win")]
473 pub win: bool,
474}
475
476#[derive(Clone, Serialize, Deserialize)]
477pub struct Perks {
478 #[serde(rename = "statPerks")]
479 pub stat_perks: StatPerks,
480
481 #[serde(rename = "styles")]
482 pub styles: Vec<Style>,
483}
484
485#[derive(Clone, Serialize, Deserialize)]
486pub struct StatPerks {
487 #[serde(rename = "defense")]
488 pub defense: i64,
489
490 #[serde(rename = "flex")]
491 pub flex: i64,
492
493 #[serde(rename = "offense")]
494 pub offense: i64,
495}
496
497#[derive(Clone, Serialize, Deserialize)]
498pub struct Style {
499 #[serde(rename = "description")]
500 pub description: Description,
501
502 #[serde(rename = "selections")]
503 pub selections: Vec<Selection>,
504
505 #[serde(rename = "style")]
506 pub style: i64,
507}
508
509#[derive(Clone, Serialize, Deserialize)]
510pub struct Selection {
511 #[serde(rename = "perk")]
512 pub perk: i64,
513
514 #[serde(rename = "var1")]
515 pub var1: i64,
516
517 #[serde(rename = "var2")]
518 pub var2: i64,
519
520 #[serde(rename = "var3")]
521 pub var3: i64,
522}
523
524#[derive(Serialize, Deserialize)]
525pub struct Team {
526 #[serde(rename = "bans")]
527 pub bans: Vec<Ban>,
528
529 #[serde(rename = "objectives")]
530 pub objectives: Objectives,
531
532 #[serde(rename = "teamId")]
533 pub team_id: i64,
534
535 #[serde(rename = "win")]
536 pub win: bool,
537}
538
539#[derive(Serialize, Deserialize)]
540pub struct Ban {
541 #[serde(rename = "championId")]
542 pub champion_id: i64,
543
544 #[serde(rename = "pickTurn")]
545 pub pick_turn: i64,
546}
547
548#[derive(Serialize, Deserialize)]
549pub struct Objectives {
550 #[serde(rename = "baron")]
551 pub baron: Baron,
552
553 #[serde(rename = "champion")]
554 pub champion: Baron,
555
556 #[serde(rename = "dragon")]
557 pub dragon: Baron,
558
559 #[serde(rename = "inhibitor")]
560 pub inhibitor: Baron,
561
562 #[serde(rename = "riftHerald")]
563 pub rift_herald: Baron,
564
565 #[serde(rename = "tower")]
566 pub tower: Baron,
567}
568
569#[derive(Serialize, Deserialize)]
570pub struct Baron {
571 #[serde(rename = "first")]
572 pub first: bool,
573
574 #[serde(rename = "kills")]
575 pub kills: i64,
576}
577
578#[derive(Serialize, Deserialize)]
579pub struct Metadata {
580 #[serde(rename = "dataVersion")]
581 pub data_version: String,
582
583 #[serde(rename = "matchId")]
584 pub match_id: String,
585
586 #[serde(rename = "participants")]
587 pub participants: Vec<String>,
588}
589
590#[derive(Clone, Serialize, Deserialize)]
591pub enum Description {
592 #[serde(rename = "primaryStyle")]
593 PrimaryStyle,
594
595 #[serde(rename = "subStyle")]
596 SubStyle,
597}
598
599#[derive(Debug, Serialize, Deserialize)]
600pub struct ChampionMastery {
601 #[serde(rename = "championId")]
602 champion_id: i64,
603
604 #[serde(rename = "championLevel")]
605 champion_level: i64,
606
607 #[serde(rename = "championPoints")]
608 champion_points: i64,
609
610 #[serde(rename = "lastPlayTime")]
611 last_play_time: i64,
612
613 #[serde(rename = "championPointsSinceLastLevel")]
614 champion_points_since_last_level: i64,
615
616 #[serde(rename = "championPointsUntilNextLevel")]
617 champion_points_until_next_level: i64,
618
619 #[serde(rename = "chestGranted")]
620 chest_granted: bool,
621
622 #[serde(rename = "tokensEarned")]
623 tokens_earned: i64,
624
625 #[serde(rename = "summonerId")]
626 summoner_id: String,
627}
628
629#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
630pub struct LeagueEntry {
631 #[serde(rename = "leagueId")]
632 pub league_id: String,
633 #[serde(rename = "queueType")]
634 pub queue_type: String,
635 pub tier: String,
636 pub rank: String,
637 #[serde(rename = "summonerId")]
638 pub summoner_id: String,
639 #[serde(rename = "summonerName")]
640 pub summoner_name: String,
641 #[serde(rename = "leaguePoints")]
642 pub league_points: i64,
643 pub wins: i64,
644 pub losses: i64,
645 pub veteran: bool,
646 pub inactive: bool,
647 #[serde(rename = "freshBlood")]
648 pub fresh_blood: bool,
649 #[serde(rename = "hotStreak")]
650 pub hot_streak: bool,
651}
652
653pub enum Division {
654 I,
655 II,
656 III,
657 IV,
658}
659
660pub enum Tier {
661 DIAMOND,
662 PLATINUM,
663 GOLD,
664 SILVER,
665 BRONZE,
666 IRON,
667}
668#[allow(non_camel_case_types)]
669pub enum Queue {
670 RANKED_SOLO_5x5,
671 RANKED_FLEX_SR,
672 RANKED_FLEX_TT, }
674
675impl fmt::Display for Division {
676 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
677 match self {
678 Division::I => write!(f, "I"),
679 Division::II => write!(f, "II"),
680 Division::III => write!(f, "III"),
681 Division::IV => write!(f, "IV"),
682 }
683 }
684}
685
686impl fmt::Display for Tier {
687 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
688 match self {
689 Tier::DIAMOND => write!(f, "DIAMOND"),
690 Tier::PLATINUM => write!(f, "PLATINUM"),
691 Tier::GOLD => write!(f, "GOLD"),
692 Tier::SILVER => write!(f, "SILVER"),
693 Tier::BRONZE => write!(f, "BRONZE"),
694 Tier::IRON => write!(f, "IRON"),
695 }
696 }
697}
698
699impl fmt::Display for Queue {
700 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
701 match self {
702 Queue::RANKED_SOLO_5x5 => write!(f, "RANKED_SOLO_5x5"),
703 Queue::RANKED_FLEX_SR => write!(f, "RANKED_FLEX_SR"),
704 Queue::RANKED_FLEX_TT => write!(f, "RANKED_FLEX_TT"),
705 }
706 }
707}
708
709#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
710pub struct LeagueList {
711 pub tier: String,
712 #[serde(rename = "leagueId")]
713 pub league_id: String,
714 pub queue: String,
715 pub name: String,
716 pub entries: Vec<Entry>,
717}
718
719#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
720pub struct Entry {
721 #[serde(rename = "summonerId")]
722 pub summoner_id: String,
723 #[serde(rename = "summonerName")]
724 pub summoner_name: String,
725 #[serde(rename = "leaguePoints")]
726 pub league_points: i64,
727 pub rank: String,
728 pub wins: i64,
729 pub losses: i64,
730 pub veteran: bool,
731 pub inactive: bool,
732 #[serde(rename = "freshBlood")]
733 pub fresh_blood: bool,
734 #[serde(rename = "hotStreak")]
735 pub hot_streak: bool,
736 #[serde(rename = "miniSeries")]
737 pub mini_series: Option<MiniSeries>,
738}
739
740#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
741pub struct MiniSeries {
742 pub target: i64,
743 pub wins: i64,
744 pub losses: i64,
745 pub progress: String,
746}
747
748#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
749pub struct CurrentGameInfo {
750 #[serde(rename = "gameId")]
751 pub game_id: i64,
752 #[serde(rename = "mapId")]
753 pub map_id: i64,
754 #[serde(rename = "gameMode")]
755 pub game_mode: String,
756 #[serde(rename = "gameType")]
757 pub game_type: String,
758 #[serde(rename = "gameQueueConfigId")]
759 pub game_queue_config_id: i64,
760 pub participants: Vec<CurrGameParticipant>,
761 pub observers: Observers,
762 #[serde(rename = "platformId")]
763 pub platform_id: String,
764 #[serde(rename = "bannedChampions")]
765 pub banned_champions: Vec<BannedChampion>,
766 #[serde(rename = "gameStartTime")]
767 pub game_start_time: i64,
768 #[serde(rename = "gameLength")]
769 pub game_length: i64,
770}
771
772#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
773pub struct CurrGameParticipant {
774 #[serde(rename = "teamId")]
775 pub team_id: i64,
776 #[serde(rename = "spell1Id")]
777 pub spell1id: i64,
778 #[serde(rename = "spell2Id")]
779 pub spell2id: i64,
780 #[serde(rename = "championId")]
781 pub champion_id: i64,
782 #[serde(rename = "profileIconId")]
783 pub profile_icon_id: i64,
784 #[serde(rename = "summonerName")]
785 pub summoner_name: String,
786 pub bot: bool,
787 #[serde(rename = "summonerId")]
788 pub summoner_id: String,
789 #[serde(rename = "gameCustomizationObjects")]
790 pub game_customization_objects: Vec<Value>,
791 pub perks: PerksArr,
792}
793
794#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
795pub struct PerksArr {
796 #[serde(rename = "perkIds")]
797 pub perk_ids: Vec<i64>,
798 #[serde(rename = "perkStyle")]
799 pub perk_style: i64,
800 #[serde(rename = "perkSubStyle")]
801 pub perk_sub_style: i64,
802}
803
804#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
805pub struct Observers {
806 #[serde(rename = "encryptionKey")]
807 pub encryption_key: String,
808}
809
810#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
811pub struct BannedChampion {
812 #[serde(rename = "championId")]
813 pub champion_id: i64,
814 #[serde(rename = "teamId")]
815 pub team_id: i64,
816 #[serde(rename = "pickTurn")]
817 pub pick_turn: i64,
818}
819
820#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
821pub struct FeaturedGames {
822 #[serde(rename = "gameList")]
823 pub game_list: Vec<GameList>,
824 #[serde(rename = "clientRefreshInterval")]
825 pub client_refresh_interval: i64,
826}
827
828#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
829pub struct GameList {
830 #[serde(rename = "gameId")]
831 pub game_id: i64,
832 #[serde(rename = "mapId")]
833 pub map_id: i64,
834 #[serde(rename = "gameMode")]
835 pub game_mode: String,
836 #[serde(rename = "gameType")]
837 pub game_type: String,
838 #[serde(rename = "gameQueueConfigId")]
839 pub game_queue_config_id: i64,
840 pub participants: Vec<FeaturedParticipant>,
841 pub observers: FeaturedObservers,
842 #[serde(rename = "platformId")]
843 pub platform_id: String,
844 #[serde(rename = "bannedChampions")]
845 pub banned_champions: Vec<Value>,
846 #[serde(rename = "gameStartTime")]
847 pub game_start_time: i64,
848 #[serde(rename = "gameLength")]
849 pub game_length: i64,
850}
851
852#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
853pub struct FeaturedParticipant {
854 #[serde(rename = "teamId")]
855 pub team_id: i64,
856 #[serde(rename = "spell1Id")]
857 pub spell1id: i64,
858 #[serde(rename = "spell2Id")]
859 pub spell2id: i64,
860 #[serde(rename = "championId")]
861 pub champion_id: i64,
862 #[serde(rename = "profileIconId")]
863 pub profile_icon_id: i64,
864 #[serde(rename = "summonerName")]
865 pub summoner_name: String,
866 pub bot: bool,
867}
868
869#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
870pub struct FeaturedObservers {
871 #[serde(rename = "encryptionKey")]
872 pub encryption_key: String,
873}
874
875#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
876pub struct PlatformData {
877 pub id: String,
878 pub name: String,
879 pub locales: Vec<String>,
880 pub maintenances: Vec<Value>,
881 pub incidents: Vec<Incident>,
882}
883
884#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
885pub struct Incident {
886 pub titles: Vec<Title>,
887 pub maintenance_status: Value,
888 pub incident_severity: String,
889 pub updated_at: Option<String>,
890 pub archive_at: Value,
891 pub created_at: String,
892 pub updates: Vec<Update>,
893 pub platforms: Vec<String>,
894 pub id: i64,
895}
896
897#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
898pub struct Title {
899 pub locale: String,
900 pub content: String,
901}
902
903#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
904pub struct Update {
905 pub translations: Vec<Translation>,
906 pub updated_at: String,
907 pub author: String,
908 pub created_at: String,
909 pub publish: bool,
910 pub publish_locations: Vec<String>,
911 pub id: i64,
912}
913
914#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
915pub struct Translation {
916 pub locale: String,
917 pub content: String,
918}