Skip to content

Commit

Permalink
Sanizize mail & addr in extra function, improve test
Browse files Browse the repository at this point in the history
  • Loading branch information
Hocuri committed May 12, 2020
1 parent 9b2c4bb commit 9239a3f
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/contact.rs
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,8 @@ impl Contact {
"Cannot create contact with empty address"
);

let (name, addr) = sanitize_name_and_addr(name, addr);

let (contact_id, sth_modified) =
Contact::add_or_lookup(context, name, addr, Origin::ManuallyCreated)?;
let blocked = Contact::is_blocked_load(context, contact_id);
Expand Down Expand Up @@ -984,6 +986,24 @@ pub fn addr_normalize(addr: &str) -> &str {
norm
}

fn sanitize_name_and_addr(name: impl AsRef<str>, addr: impl AsRef<str>) -> (String, String) {
lazy_static! {
static ref ADDR_WITH_NAME_REGEX: Regex = Regex::new("(.*)<(.*)>").unwrap();
}
if let Some(captures) = ADDR_WITH_NAME_REGEX.captures(addr.as_ref()) {
(
if name.as_ref().is_empty() {
normalize_name(&captures[1])
} else {
name.as_ref().to_string()
},
captures[2].to_string(),
)
} else {
(name.as_ref().to_string(), addr.as_ref().to_string())
}
}

fn set_block_contact(context: &Context, contact_id: u32, new_blocking: bool) {
if contact_id <= DC_CONTACT_ID_LAST_SPECIAL {
return;
Expand Down Expand Up @@ -1158,6 +1178,10 @@ mod tests {
assert_eq!(may_be_valid_addr("u@d.tt"), true);
assert_eq!(may_be_valid_addr("u@.tt"), false);
assert_eq!(may_be_valid_addr("@d.tt"), false);
assert_eq!(may_be_valid_addr("<da@d.tt"), false);
assert_eq!(may_be_valid_addr("sk <@d.tt>"), false);
assert_eq!(may_be_valid_addr("as@sd.de>"), false);
assert_eq!(may_be_valid_addr("ask dkl@dd.tt"), false);
}

#[test]
Expand Down

0 comments on commit 9239a3f

Please sign in to comment.