aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/model/user.rs16
-rw-r--r--tests/test_user.rs2
2 files changed, 18 insertions, 0 deletions
diff --git a/src/model/user.rs b/src/model/user.rs
index 46da757..4875e6f 100644
--- a/src/model/user.rs
+++ b/src/model/user.rs
@@ -105,6 +105,14 @@ impl CurrentUser {
pub fn guilds(&self) -> Result<Vec<GuildInfo>> {
rest::get_guilds(GuildPagination::After(GuildId(0)), 100)
}
+
+ /// Returns a static formatted URL of the user's icon, if one exists.
+ ///
+ /// This will always produce a WEBP image URL.
+ pub fn static_avatar_url(&self) -> Option<String> {
+ self.avatar.as_ref()
+ .map(|av| format!(cdn!("/avatars/{}/{}.webp?size=1024"), self.id.0, av))
+ }
}
impl User {
@@ -235,6 +243,14 @@ impl User {
},
}
}
+
+ /// Returns a static formatted URL of the user's icon, if one exists.
+ ///
+ /// This will always produce a WEBP image URL.
+ pub fn static_avatar_url(&self) -> Option<String> {
+ self.avatar.as_ref()
+ .map(|av| format!(cdn!("/avatars/{}/{}.webp?size=1024"), self.id.0, av))
+ }
}
impl fmt::Display for User {
diff --git a/tests/test_user.rs b/tests/test_user.rs
index 3da1ec6..21c336d 100644
--- a/tests/test_user.rs
+++ b/tests/test_user.rs
@@ -17,9 +17,11 @@ fn test_core() {
let mut user = gen();
assert!(user.avatar_url().unwrap().ends_with("/avatars/210/abc.webp?size=1024"));
+ assert!(user.static_avatar_url().unwrap().ends_with("/avatars/210/abc.webp?size=1024"));
user.avatar = Some("a_aaa".to_owned());
assert!(user.avatar_url().unwrap().ends_with("/avatars/210/a_aaa.gif?size=1024"));
+ assert!(user.static_avatar_url().unwrap().ends_with("/avatars/210/a_aaa.webp?size=1024"));
user.avatar = None;
assert!(user.avatar_url().is_none());