rusty_blitzcrank/
types.rs

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, // This is technically a part of the API but really outdated. R.I.P. Twisted Treeline
673}
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}