riot_api/models/routing/
platform_routing.rs1use 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}