1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use md5::compute;
pub fn get_avatar_url(email: &str) -> Result<String, AvatarFetchError> {
let email_cleaned = email.trim().to_ascii_lowercase();
let hash = compute(email_cleaned.as_bytes());
let hash_str = format!("{:x}", hash);
let base_url = "https://cdn.libravatar.org/avatar/";
Ok(format!("{}{}", base_url, hash_str))
}
#[derive(Debug)]
pub enum AvatarFetchError {}
#[cfg(test)]
mod tests {
#[test]
fn normal_email() {
let result = super::get_avatar_url("kot@yukata.tech");
assert!(!result.is_err());
let url = result.unwrap();
assert_eq!(
url,
"https://cdn.libravatar.org/avatar/0b35f3ba043d931801146c6bdb7f6368"
);
}
}