use crate::enums::shard::Shard;
use serde::{Deserialize, Serialize};
use std::str::FromStr;
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "lowercase")]
#[derive(PartialEq, Eq, Hash)]
pub enum Region {
EU,
AP,
NA,
BR,
LATAM,
KR,
ESPORTS,
PBE,
}
impl ToString for Region {
fn to_string(&self) -> String {
match self {
Region::EU => "eu",
Region::AP => "ap",
Region::NA => "na",
Region::BR => "br",
Region::LATAM => "latam",
Region::KR => "kr",
Region::ESPORTS => "esports",
Region::PBE => "pbe",
}
.to_string()
}
}
impl FromStr for Region {
type Err = ();
fn from_str(s: &str) -> Result<Region, ()> {
match s.to_lowercase().as_str() {
"eu" => Ok(Region::EU),
"ap" => Ok(Region::AP),
"na" => Ok(Region::NA),
"br" => Ok(Region::BR),
"latam" => Ok(Region::LATAM),
"kr" => Ok(Region::KR),
"esports" => Ok(Region::ESPORTS),
"pbe" => Ok(Region::PBE),
_ => Err(()),
}
}
}
impl Region {
pub fn to_shard(&self) -> Shard {
match self {
Region::EU => Shard::EU,
Region::AP => Shard::AP,
Region::NA => Shard::PBE,
Region::BR => Shard::NA,
Region::LATAM => Shard::NA,
Region::KR => Shard::KR,
Region::ESPORTS => Shard::ESPORTS,
Region::PBE => Shard::PBE,
}
}
}