use std::fmt::{self, Display, Formatter};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum Domain {
Custom(String),
#[cfg(feature = "use-rquest")]
TenMinMailDe,
#[cfg(feature = "use-rquest")]
TenMinutenMailXyz,
#[cfg(feature = "use-rquest")]
ExistiertNet,
#[cfg(feature = "use-rquest")]
FliegenderFish,
#[cfg(feature = "use-rquest")]
JagaEmail,
#[cfg(feature = "use-rquest")]
MdzEmail,
#[cfg(feature = "use-rquest")]
MuellMailCom,
#[cfg(feature = "use-rquest")]
MuelleMailCom,
#[cfg(feature = "use-rquest")]
MuellMonster,
#[cfg(feature = "use-rquest")]
MuellIcu,
#[cfg(feature = "use-rquest")]
MuellIo,
#[cfg(feature = "use-rquest")]
MuellXyz,
#[cfg(feature = "use-rquest")]
MagSpamNet,
#[cfg(feature = "use-rquest")]
FukaruCom,
#[cfg(feature = "use-rquest")]
OidaIcu,
#[cfg(feature = "use-rquest")]
PapierkorbMe,
#[cfg(feature = "use-rquest")]
SpamCare,
#[cfg(feature = "use-rquest")]
TonneTo,
#[cfg(feature = "use-rquest")]
UltraFyi,
#[cfg(feature = "use-rquest")]
WegwerfEmailDe,
#[cfg(feature = "use-rquest")]
DsgvoParty,
#[cfg(feature = "use-rquest")]
KnickerbockerbanDe,
#[cfg(feature = "use-rquest")]
LambsauceDe,
#[cfg(feature = "use-rquest")]
RamenMailDe,
#[cfg(feature = "use-rquest")]
Ji5De,
#[cfg(feature = "use-rquest")]
Ji6De,
#[cfg(feature = "use-rquest")]
Ji7De,
#[cfg(feature = "use-rquest")]
SudernDe,
#[cfg(feature = "use-rquest")]
HihiLol,
#[cfg(feature = "use-rquest")]
KeinDate,
#[cfg(feature = "use-rquest")]
HolioDay,
#[cfg(feature = "use-rquest")]
CornHolioDay,
#[cfg(feature = "use-rquest")]
BungHolioDay,
#[cfg(feature = "use-rquest")]
StacysMom,
TerribleCoffeeOrg,
UnderseaGolfCom,
JailBreakEverythingCom,
Awesome47,
ExpiredToasterOrg,
UndeadBankCom,
}
impl Domain {
pub(crate) fn get_all_domains() -> Vec<Domain> {
vec![
#[cfg(feature = "use-rquest")]
Domain::TenMinMailDe,
#[cfg(feature = "use-rquest")]
Domain::TenMinutenMailXyz,
#[cfg(feature = "use-rquest")]
Domain::ExistiertNet,
#[cfg(feature = "use-rquest")]
Domain::FliegenderFish,
#[cfg(feature = "use-rquest")]
Domain::JagaEmail,
#[cfg(feature = "use-rquest")]
Domain::MdzEmail,
#[cfg(feature = "use-rquest")]
Domain::MuellMailCom,
#[cfg(feature = "use-rquest")]
Domain::MuelleMailCom,
#[cfg(feature = "use-rquest")]
Domain::MuellMonster,
#[cfg(feature = "use-rquest")]
Domain::MuellIcu,
#[cfg(feature = "use-rquest")]
Domain::MuellIo,
#[cfg(feature = "use-rquest")]
Domain::MuellXyz,
#[cfg(feature = "use-rquest")]
Domain::MagSpamNet,
#[cfg(feature = "use-rquest")]
Domain::FukaruCom,
#[cfg(feature = "use-rquest")]
Domain::OidaIcu,
#[cfg(feature = "use-rquest")]
Domain::PapierkorbMe,
#[cfg(feature = "use-rquest")]
Domain::SpamCare,
#[cfg(feature = "use-rquest")]
Domain::TonneTo,
#[cfg(feature = "use-rquest")]
Domain::UltraFyi,
#[cfg(feature = "use-rquest")]
Domain::WegwerfEmailDe,
#[cfg(feature = "use-rquest")]
Domain::DsgvoParty,
#[cfg(feature = "use-rquest")]
Domain::KnickerbockerbanDe,
#[cfg(feature = "use-rquest")]
Domain::LambsauceDe,
#[cfg(feature = "use-rquest")]
Domain::RamenMailDe,
#[cfg(feature = "use-rquest")]
Domain::Ji5De,
#[cfg(feature = "use-rquest")]
Domain::Ji6De,
#[cfg(feature = "use-rquest")]
Domain::Ji7De,
#[cfg(feature = "use-rquest")]
Domain::SudernDe,
#[cfg(feature = "use-rquest")]
Domain::HihiLol,
#[cfg(feature = "use-rquest")]
Domain::KeinDate,
#[cfg(feature = "use-rquest")]
Domain::HolioDay,
#[cfg(feature = "use-rquest")]
Domain::CornHolioDay,
#[cfg(feature = "use-rquest")]
Domain::BungHolioDay,
#[cfg(feature = "use-rquest")]
Domain::StacysMom,
Domain::TerribleCoffeeOrg,
Domain::UnderseaGolfCom,
Domain::JailBreakEverythingCom,
Domain::Awesome47,
Domain::ExpiredToasterOrg,
Domain::UndeadBankCom,
]
}
}
impl Display for Domain {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
match self {
Domain::Custom(custom) => write!(f, "{}", custom),
#[cfg(feature = "use-rquest")]
Domain::TenMinMailDe => write!(f, "10minmail.de"),
#[cfg(feature = "use-rquest")]
Domain::TenMinutenMailXyz => write!(f, "10minutenmail.xyz"),
#[cfg(feature = "use-rquest")]
Domain::ExistiertNet => write!(f, "existiert.net"),
#[cfg(feature = "use-rquest")]
Domain::FliegenderFish => write!(f, "fliegender.fish"),
#[cfg(feature = "use-rquest")]
Domain::JagaEmail => write!(f, "jaga.email"),
#[cfg(feature = "use-rquest")]
Domain::MdzEmail => write!(f, "mdz.email"),
#[cfg(feature = "use-rquest")]
Domain::MuellMailCom => write!(f, "muellmail.com"),
#[cfg(feature = "use-rquest")]
Domain::MuelleMailCom => write!(f, "muellemail.com"),
#[cfg(feature = "use-rquest")]
Domain::MuellMonster => write!(f, "muell.monster"),
#[cfg(feature = "use-rquest")]
Domain::MuellIcu => write!(f, "muell.icu"),
#[cfg(feature = "use-rquest")]
Domain::MuellIo => write!(f, "muell.io"),
#[cfg(feature = "use-rquest")]
Domain::MuellXyz => write!(f, "muell.xyz"),
#[cfg(feature = "use-rquest")]
Domain::MagSpamNet => write!(f, "magspam.net"),
#[cfg(feature = "use-rquest")]
Domain::FukaruCom => write!(f, "fukaru.com"),
#[cfg(feature = "use-rquest")]
Domain::OidaIcu => write!(f, "oida.icu"),
#[cfg(feature = "use-rquest")]
Domain::PapierkorbMe => write!(f, "papierkorb.me"),
#[cfg(feature = "use-rquest")]
Domain::SpamCare => write!(f, "spam.care"),
#[cfg(feature = "use-rquest")]
Domain::TonneTo => write!(f, "tonne.to"),
#[cfg(feature = "use-rquest")]
Domain::UltraFyi => write!(f, "ultra.fyi"),
#[cfg(feature = "use-rquest")]
Domain::WegwerfEmailDe => write!(f, "wegwerfemail.de"),
#[cfg(feature = "use-rquest")]
Domain::DsgvoParty => write!(f, "dsgvo.party"),
#[cfg(feature = "use-rquest")]
Domain::KnickerbockerbanDe => write!(f, "knickerbockerban.de"),
#[cfg(feature = "use-rquest")]
Domain::LambsauceDe => write!(f, "lambsauce.de"),
#[cfg(feature = "use-rquest")]
Domain::RamenMailDe => write!(f, "ramenmail.de"),
#[cfg(feature = "use-rquest")]
Domain::Ji5De => write!(f, "ji5.de"),
#[cfg(feature = "use-rquest")]
Domain::Ji6De => write!(f, "ji6.de"),
#[cfg(feature = "use-rquest")]
Domain::Ji7De => write!(f, "ji7.de"),
#[cfg(feature = "use-rquest")]
Domain::SudernDe => write!(f, "sudern.de"),
#[cfg(feature = "use-rquest")]
Domain::HihiLol => write!(f, "hihi.lol"),
#[cfg(feature = "use-rquest")]
Domain::KeinDate => write!(f, "kein.date"),
#[cfg(feature = "use-rquest")]
Domain::HolioDay => write!(f, "holio.day"),
#[cfg(feature = "use-rquest")]
Domain::CornHolioDay => write!(f, "corn.holio.day"),
#[cfg(feature = "use-rquest")]
Domain::BungHolioDay => write!(f, "bung.holio.day"),
#[cfg(feature = "use-rquest")]
Domain::StacysMom => write!(f, "stacys.mom"),
Domain::TerribleCoffeeOrg => write!(f, "terriblecoffee.org"),
Domain::UnderseaGolfCom => write!(f, "underseagolf.com"),
Domain::JailBreakEverythingCom => write!(f, "jailbreakeverything.com"),
Domain::Awesome47 => write!(f, "awesome47.com"),
Domain::ExpiredToasterOrg => write!(f, "expiredtoaster.org"),
Domain::UndeadBankCom => write!(f, "undeadbank.com"),
}
}
}
impl From<&str> for Domain {
fn from(value: &str) -> Self {
if let Some(domain) = Domain::get_all_domains()
.into_iter()
.find(|domain| domain.to_string() == value)
{
return domain;
}
Domain::Custom(value.to_string())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_domain_from_str() {
assert_eq!(
Domain::from("terriblecoffee.org"),
Domain::TerribleCoffeeOrg
);
assert_eq!(
Domain::from("custom.com"),
Domain::Custom("custom.com".to_string())
);
}
#[test]
fn test_domain_to_string() {
assert_eq!(Domain::TerribleCoffeeOrg.to_string(), "terriblecoffee.org");
assert_eq!(
Domain::Custom("custom.com".to_string()).to_string(),
"custom.com"
);
}
}