summaryrefslogtreecommitdiff
path: root/crates/smtp/src/scripts/functions/url.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/smtp/src/scripts/functions/url.rs')
-rw-r--r--crates/smtp/src/scripts/functions/url.rs22
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());