diff --git a/src/model/user.rs b/src/model/user.rs index b1a1f16c6e1..83e80b98b82 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -2,7 +2,6 @@ use std::fmt; use super::utils::{into_map, into_string, remove}; use super::{ CurrentUser, - DefaultAvatar, FriendSourceFlags, GuildContainer, GuildId, @@ -156,18 +155,7 @@ impl User { /// [`Error::Num`]: ../enum.Error.html#variant.Num /// [`Error::Other`]: ../enum.Error.html#variant.Other pub fn default_avatar_url(&self) -> Result { - Ok(base!("/assets/{}.png", match self.discriminator.parse::()? % 5u16 { - 0 => DefaultAvatar::Blurple.name().to_owned(), - 1 => DefaultAvatar::Grey.name().to_owned(), - 2 => DefaultAvatar::Green.name().to_owned(), - 3 => DefaultAvatar::Orange.name().to_owned(), - 4 => DefaultAvatar::Red.name().to_owned(), - other => { - error!("Reached impossible default avatar match: {}", other); - - return Err(Error::Other("Reached impossible default match")); - }, - })) + Ok(cdn!("/embed/avatars/{}.png", self.discriminator.parse::()? % 5u16).to_owned()) } /// Send a direct message to a user. This will create or retrieve the diff --git a/src/utils/macros.rs b/src/utils/macros.rs index 3032dc32c0f..e4aaa14d963 100644 --- a/src/utils/macros.rs +++ b/src/utils/macros.rs @@ -26,7 +26,10 @@ macro_rules! request { macro_rules! cdn { ($e:expr) => { concat!("https://cdn.discordapp.com", $e) - } + }; + ($e:expr, $($rest:tt)*) => { + format!(cdn!($e), $($rest)*) + }; } macro_rules! base { diff --git a/tests/test_user.rs b/tests/test_user.rs index 702c301a46c..dd51f449010 100644 --- a/tests/test_user.rs +++ b/tests/test_user.rs @@ -32,13 +32,13 @@ fn default_avatars() { let mut user = gen(); user.discriminator = "0".to_owned(); - assert!(user.default_avatar_url().unwrap().ends_with("1b.png")); + assert!(user.default_avatar_url().unwrap().ends_with("0.png")); user.discriminator = "1".to_owned(); - assert!(user.default_avatar_url().unwrap().ends_with("68.png")); + assert!(user.default_avatar_url().unwrap().ends_with("1.png")); user.discriminator = "2".to_owned(); - assert!(user.default_avatar_url().unwrap().ends_with("4d.png")); + assert!(user.default_avatar_url().unwrap().ends_with("2.png")); user.discriminator = "3".to_owned(); - assert!(user.default_avatar_url().unwrap().ends_with("aa.png")); + assert!(user.default_avatar_url().unwrap().ends_with("3.png")); user.discriminator = "4".to_owned(); - assert!(user.default_avatar_url().unwrap().ends_with("29.png")); + assert!(user.default_avatar_url().unwrap().ends_with("4.png")); }