diff options
Diffstat (limited to 'crates/smtp/src/scripts/functions/url.rs')
-rw-r--r-- | crates/smtp/src/scripts/functions/url.rs | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/crates/smtp/src/scripts/functions/url.rs b/crates/smtp/src/scripts/functions/url.rs index 9ecbfd5a..b1f9ef3b 100644 --- a/crates/smtp/src/scripts/functions/url.rs +++ b/crates/smtp/src/scripts/functions/url.rs @@ -28,32 +28,30 @@ use crate::config::scripts::SieveContext; use super::ApplyString; -pub fn fn_uri_part<'x>(_: &'x Context<'x, SieveContext>, v: Vec<Variable<'x>>) -> Variable<'x> { - let part = v[1].to_cow(); +pub fn fn_uri_part<'x>(_: &'x Context<'x, SieveContext>, v: Vec<Variable>) -> Variable { + let part = v[1].to_string(); v[0].transform(|uri| { uri.parse::<Uri>() .ok() .and_then(|uri| match part.as_ref() { - "scheme" => uri.scheme_str().map(|s| Variable::String(s.to_string())), - "host" => uri.host().map(|s| Variable::String(s.to_string())), + "scheme" => uri.scheme_str().map(|s| Variable::from(s.to_string())), + "host" => uri.host().map(|s| Variable::from(s.to_string())), "scheme_host" => uri .scheme_str() .and_then(|s| (s, uri.host()?).into()) - .map(|(s, h)| Variable::String(format!("{}://{}", s, h))), - "path" => Variable::String(uri.path().to_string()).into(), + .map(|(s, h)| Variable::from(format!("{}://{}", s, h))), + "path" => Variable::from(uri.path().to_string()).into(), "port" => uri.port_u16().map(|port| Variable::Integer(port as i64)), - "query" => uri.query().map(|s| Variable::String(s.to_string())), - "path_query" => uri - .path_and_query() - .map(|s| Variable::String(s.to_string())), - "authority" => uri.authority().map(|s| Variable::String(s.to_string())), + "query" => uri.query().map(|s| Variable::from(s.to_string())), + "path_query" => uri.path_and_query().map(|s| Variable::from(s.to_string())), + "authority" => uri.authority().map(|s| Variable::from(s.to_string())), _ => None, }) .unwrap_or_default() }) } -pub fn fn_puny_decode<'x>(_: &'x Context<'x, SieveContext>, v: Vec<Variable<'x>>) -> Variable<'x> { +pub fn fn_puny_decode<'x>(_: &'x Context<'x, SieveContext>, v: Vec<Variable>) -> Variable { v[0].transform(|domain| { if domain.contains("xn--") { let mut decoded = String::with_capacity(domain.len()); |