TryFrom for ProxyType

This commit is contained in:
ssrlive 2024-04-09 12:57:18 +08:00
parent 18f4689d21
commit 58364580f5

View file

@ -333,12 +333,7 @@ impl ArgProxy {
Some(UserKey::new(username, password))
};
let proxy_type = match url.scheme().to_ascii_lowercase().as_str() {
"socks4" => Ok(ProxyType::Socks4),
"socks5" => Ok(ProxyType::Socks5),
"http" => Ok(ProxyType::Http),
scheme => Err(Error::from(&format!("`{scheme}` is an invalid proxy type"))),
}?;
let proxy_type = url.scheme().to_ascii_lowercase().as_str().try_into()?;
Ok(ArgProxy {
proxy_type,
@ -358,6 +353,19 @@ pub enum ProxyType {
None,
}
impl TryFrom<&str> for ProxyType {
type Error = Error;
fn try_from(value: &str) -> Result<Self> {
match value {
"http" => Ok(ProxyType::Http),
"socks4" => Ok(ProxyType::Socks4),
"socks5" => Ok(ProxyType::Socks5),
"none" => Ok(ProxyType::None),
scheme => Err(Error::from(&format!("`{scheme}` is an invalid proxy type"))),
}
}
}
impl std::fmt::Display for ProxyType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {