From ab778f8a9cf47c4e27fe688a61effb0caa4f8a6e Mon Sep 17 00:00:00 2001 From: Austin Hellyer Date: Wed, 28 Dec 2016 11:11:46 -0800 Subject: Support webp/gif avatars If the avatar hash begins with "a_", then the avatar is animated and is a GIF. Otherwise, use WEBP. --- src/model/user.rs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'src') 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 { - 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 { - 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. -- cgit v1.2.3