diff options
| author | Austin Hellyer <[email protected]> | 2016-12-28 11:11:46 -0800 |
|---|---|---|
| committer | Austin Hellyer <[email protected]> | 2016-12-28 11:11:46 -0800 |
| commit | ab778f8a9cf47c4e27fe688a61effb0caa4f8a6e (patch) | |
| tree | c19e5a5ca6e65a22d124c76031340fb6643931f3 | |
| parent | Accept u64 shard counts (diff) | |
| download | serenity-ab778f8a9cf47c4e27fe688a61effb0caa4f8a6e.tar.xz serenity-ab778f8a9cf47c4e27fe688a61effb0caa4f8a6e.zip | |
Support webp/gif avatars
If the avatar hash begins with "a_", then the avatar is animated and is
a GIF. Otherwise, use WEBP.
| -rw-r--r-- | src/model/user.rs | 28 | ||||
| -rw-r--r-- | tests/test_user.rs | 6 |
2 files changed, 28 insertions, 6 deletions
diff --git a/src/model/user.rs b/src/model/user.rs index af026ea..46da757 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -35,9 +35,19 @@ use ::client::CACHE; impl CurrentUser { /// Returns the formatted URL of the user's icon, if one exists. + /// + /// This will produce a WEBP image URL, or GIF if the user has a GIF avatar. pub fn avatar_url(&self) -> Option<String> { - self.avatar.as_ref().map(|av| - format!(cdn!("/avatars/{}/{}.jpg"), self.id.0, av)) + self.avatar.as_ref() + .map(|av| { + let ext = if av.starts_with("a_") { + "gif" + } else { + "webp" + }; + + format!(cdn!("/avatars/{}/{}.{}?size=1024"), self.id.0, av, ext) + }) } /// Edits the current user's profile settings. @@ -99,9 +109,19 @@ impl CurrentUser { impl User { /// Returns the formatted URL of the user's icon, if one exists. + /// + /// This will produce a WEBP image URL, or GIF if the user has a GIF avatar. pub fn avatar_url(&self) -> Option<String> { - self.avatar.as_ref().map(|av| - format!(cdn!("/avatars/{}/{}.jpg"), self.id.0, av)) + self.avatar.as_ref() + .map(|av| { + let ext = if av.starts_with("a_") { + "gif" + } else { + "webp" + }; + + format!(cdn!("/avatars/{}/{}.{}?size=1024"), self.id.0, av, ext) + }) } /// Gets user as `Member` of a guild. diff --git a/tests/test_user.rs b/tests/test_user.rs index b4509f3..3da1ec6 100644 --- a/tests/test_user.rs +++ b/tests/test_user.rs @@ -16,9 +16,11 @@ fn gen() -> User { fn test_core() { let mut user = gen(); - assert!(user.avatar_url().unwrap().ends_with("/avatars/210/abc.jpg")); + assert!(user.avatar_url().unwrap().ends_with("/avatars/210/abc.webp?size=1024")); - user.avatar = None; + user.avatar = Some("a_aaa".to_owned()); + assert!(user.avatar_url().unwrap().ends_with("/avatars/210/a_aaa.gif?size=1024")); + user.avatar = None; assert!(user.avatar_url().is_none()); } |