lichess_api/model/tv/
mod.rs

1pub mod channels;
2pub mod games;
3pub mod stream;
4
5use crate::model::{Color, LightUser};
6use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Debug, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct Champion {
11    pub user: LightUser,
12    pub rating: u32,
13    pub game_id: String,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub color: Option<Color>,
16}
17
18#[derive(Clone, Debug, Serialize, Deserialize)]
19#[serde(rename_all = "camelCase")]
20pub struct Channels {
21    bot: Champion,
22    blitz: Champion,
23    racing_kings: Champion,
24    ultra_bullet: Champion,
25    bullet: Champion,
26    classical: Champion,
27    three_check: Champion,
28    antichess: Champion,
29    computer: Champion,
30    horde: Champion,
31    rapid: Champion,
32    atomic: Champion,
33    crazyhouse: Champion,
34    chess960: Champion,
35    king_of_the_hill: Champion,
36    best: Champion,
37}
38
39#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
40#[serde(rename_all = "camelCase")]
41pub enum ChannelName {
42    Bot,
43    Blitz,
44    RacingKings,
45    UltraBullet,
46    Bullet,
47    Classical,
48    ThreeCheck,
49    Antichess,
50    Computer,
51    Horde,
52    Rapid,
53    Atomic,
54    Crazyhouse,
55    Chess960,
56    KingOfTheHill,
57    Best,
58}
59
60impl ChannelName {
61    pub const fn as_str(self) -> &'static str {
62        match self {
63            ChannelName::Bot => "bot",
64            ChannelName::Blitz => "blitz",
65            ChannelName::RacingKings => "racingKings",
66            ChannelName::UltraBullet => "ultraBullet",
67            ChannelName::Bullet => "bullet",
68            ChannelName::Classical => "classical",
69            ChannelName::ThreeCheck => "threeCheck",
70            ChannelName::Antichess => "antichess",
71            ChannelName::Computer => "computer",
72            ChannelName::Horde => "horde",
73            ChannelName::Rapid => "rapid",
74            ChannelName::Atomic => "atomic",
75            ChannelName::Crazyhouse => "crazyhouse",
76            ChannelName::Chess960 => "chess960",
77            ChannelName::KingOfTheHill => "kingOfTheHill",
78            ChannelName::Best => "best",
79        }
80    }
81}
82
83impl std::fmt::Display for ChannelName {
84    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
85        f.write_str(self.as_str())
86    }
87}