#![cfg(feature = "puuid")]
use serde::{Deserialize, Serialize};
use std::fmt::Display;
use std::str::FromStr;
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone, Copy)]
#[serde(rename_all = "lowercase")]
pub enum Affinity {
AS2,
ASIA,
BR1,
EU,
EU3,
EUN1,
EUW1,
JP1,
KR1,
LA1,
LA2,
NA1,
OC1,
PBE1,
RU1,
SEA1,
SEA2,
SEA3,
SEA4,
TR1,
US,
#[serde(rename = "us-br1")]
UsBr1,
#[serde(rename = "us-la2")]
UsLa2,
US2,
}
impl Display for Affinity {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let str = match self {
Affinity::AS2 => "as2",
Affinity::ASIA => "asia",
Affinity::BR1 => "br1",
Affinity::EU => "eu",
Affinity::EU3 => "eu3",
Affinity::EUN1 => "eun1",
Affinity::EUW1 => "euw1",
Affinity::JP1 => "jp1",
Affinity::KR1 => "kr1",
Affinity::LA1 => "la1",
Affinity::LA2 => "la2",
Affinity::NA1 => "na1",
Affinity::OC1 => "oc1",
Affinity::PBE1 => "pbe1",
Affinity::RU1 => "ru1",
Affinity::SEA1 => "sea1",
Affinity::SEA2 => "sea2",
Affinity::SEA3 => "sea3",
Affinity::SEA4 => "sea4",
Affinity::TR1 => "tr1",
Affinity::US => "us",
Affinity::UsBr1 => "us-br1",
Affinity::UsLa2 => "us-la2",
Affinity::US2 => "us2",
}
.to_string();
write!(f, "{}", str)
}
}
impl FromStr for Affinity {
type Err = ();
fn from_str(s: &str) -> Result<Affinity, ()> {
match s.to_lowercase().as_str() {
"as2" => Ok(Affinity::AS2),
"asia" => Ok(Affinity::ASIA),
"br1" => Ok(Affinity::BR1),
"eu" => Ok(Affinity::EU),
"eu3" => Ok(Affinity::EU3),
"eun1" => Ok(Affinity::EUN1),
"euw1" => Ok(Affinity::EUW1),
"jp1" => Ok(Affinity::JP1),
"kr1" => Ok(Affinity::KR1),
"la1" => Ok(Affinity::LA1),
"la2" => Ok(Affinity::LA2),
"na1" => Ok(Affinity::NA1),
"oc1" => Ok(Affinity::OC1),
"pbe1" => Ok(Affinity::PBE1),
"ru1" => Ok(Affinity::RU1),
"sea1" => Ok(Affinity::SEA1),
"sea2" => Ok(Affinity::SEA2),
"sea3" => Ok(Affinity::SEA3),
"sea4" => Ok(Affinity::SEA4),
"tr1" => Ok(Affinity::TR1),
"us" => Ok(Affinity::US),
"us-br1" => Ok(Affinity::UsBr1),
"us-la2" => Ok(Affinity::UsLa2),
"us2" => Ok(Affinity::US2),
_ => Err(()),
}
}
}