riot_api/models/routing/
platform_routing.rs

1use std::fmt::{Display, Formatter};
2use serde::Deserialize;
3use crate::models::client::{
4    ConversionError, configuration::Routable
5};
6
7#[derive(Debug, Deserialize, Copy, Clone, Ord, PartialOrd, Eq, PartialEq)]
8pub enum PlatformRouting {
9    BR1,
10    EUN1,
11    EUW1,
12    JP1,
13    KR,
14    LA1,
15    LA2,
16    NA1,
17    OC1,
18    TR1,
19    RU,
20    PH2,
21    SG2,
22    TH2,
23    TW2,
24    VN2,
25}
26
27impl Routable for PlatformRouting {
28    fn base_url(&self) -> String {
29        format!("https://{}.api.riotgames.com", self)
30    }
31}
32
33impl TryFrom<&str> for PlatformRouting {
34    type Error = ConversionError;
35
36    fn try_from(value: &str) -> Result<Self, Self::Error> {
37        match value.to_lowercase().as_str() {
38            "br1"  => Ok(Self::BR1),
39            "eun1" => Ok(Self::EUN1),
40            "euw1" => Ok(Self::EUW1),
41            "jp1"  => Ok(Self::JP1),
42            "kr"   => Ok(Self::KR),
43            "la1"  => Ok(Self::LA1),
44            "la2"  => Ok(Self::LA2),
45            "na1"  => Ok(Self::NA1),
46            "oc1"  => Ok(Self::OC1),
47            "tr1"  => Ok(Self::TR1),
48            "ru"   => Ok(Self::RU),
49            "ph2"  => Ok(Self::PH2),
50            "sg2"  => Ok(Self::SG2),
51            "th2"  => Ok(Self::TH2),
52            "tw2"  => Ok(Self::TW2),
53            "vn2"  => Ok(Self::VN2),
54
55            _ => Err(Self::Error::InvalidStringError),
56        }
57    }
58}
59impl TryFrom<String> for PlatformRouting {
60    type Error = ConversionError;
61
62    fn try_from(value: String) -> Result<Self, Self::Error> {
63        value.as_str().try_into()
64    }
65}
66
67impl<'l> Into<&'l str> for PlatformRouting {
68    fn into(self) -> &'l str {
69        match self {
70            Self::BR1  => "BR1",
71            Self::EUN1 => "EUN1",
72            Self::EUW1 => "EUW1",
73            Self::JP1  => "JP1",
74            Self::KR   => "KR",
75            Self::LA1  => "LA1",
76            Self::LA2  => "LA2",
77            Self::NA1  => "NA1",
78            Self::OC1  => "OC1",
79            Self::TR1  => "TR1",
80            Self::RU   => "RU",
81            Self::PH2  => "PH2",
82            Self::SG2  => "SG2",
83            Self::TH2  => "TH2",
84            Self::TW2  => "TW2",
85            Self::VN2  => "VN2",
86        }
87    }
88}
89impl Into<String> for PlatformRouting {
90    fn into(self) -> String {
91        match self {
92            Self::BR1  => "BR1",
93            Self::EUN1 => "EUN1",
94            Self::EUW1 => "EUW1",
95            Self::JP1  => "JP1",
96            Self::KR   => "KR",
97            Self::LA1  => "LA1",
98            Self::LA2  => "LA2",
99            Self::NA1  => "NA1",
100            Self::OC1  => "OC1",
101            Self::TR1  => "TR1",
102            Self::RU   => "RU",
103            Self::PH2  => "PH2",
104            Self::SG2  => "SG2",
105            Self::TH2  => "TH2",
106            Self::TW2  => "TW2",
107            Self::VN2  => "VN2",
108        }.to_string()
109    }
110}
111
112impl Display for PlatformRouting {
113    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
114        write!(f, "{}", Into::<String>::into(*self))
115    }
116}