From 711a4e90a4427572fb4fab0d780e00c016d088fc Mon Sep 17 00:00:00 2001 From: RogueException Date: Sat, 18 Mar 2017 08:30:33 -0300 Subject: [PATCH] Renamed AvatarFormat -> ImageFormat. Cleaned up. --- src/Discord.Net.Core/CDN.cs | 25 +++++++++++++++---- .../{Users/AvatarFormat.cs => ImageFormat.cs} | 2 +- src/Discord.Net.Core/Entities/Users/IUser.cs | 2 +- .../Entities/Users/RestUser.cs | 3 ++- src/Discord.Net.Rpc/Entities/Users/RpcUser.cs | 3 ++- .../Entities/Users/SocketUser.cs | 3 ++- 6 files changed, 28 insertions(+), 10 deletions(-) rename src/Discord.Net.Core/Entities/{Users/AvatarFormat.cs => ImageFormat.cs} (78%) diff --git a/src/Discord.Net.Core/CDN.cs b/src/Discord.Net.Core/CDN.cs index c5f05c0c3..d3ade3722 100644 --- a/src/Discord.Net.Core/CDN.cs +++ b/src/Discord.Net.Core/CDN.cs @@ -1,16 +1,17 @@ -namespace Discord +using System; + +namespace Discord { public static class CDN { public static string GetApplicationIconUrl(ulong appId, string iconId) => iconId != null ? $"{DiscordConfig.CDNUrl}app-icons/{appId}/{iconId}.jpg" : null; - public static string GetUserAvatarUrl(ulong userId, string avatarId, ushort size, AvatarFormat format) + public static string GetUserAvatarUrl(ulong userId, string avatarId, ushort size, ImageFormat format) { if (avatarId == null) return null; - if (format == AvatarFormat.Auto) - format = avatarId.StartsWith("a_") ? AvatarFormat.Gif : AvatarFormat.Png; - return $"{DiscordConfig.CDNUrl}avatars/{userId}/{avatarId}.{format.ToString().ToLower()}?size={size}"; + string extension = FormatToExtension(format, avatarId); + return $"{DiscordConfig.CDNUrl}avatars/{userId}/{avatarId}.{extension}?size={size}"; } public static string GetGuildIconUrl(ulong guildId, string iconId) => iconId != null ? $"{DiscordConfig.CDNUrl}icons/{guildId}/{iconId}.jpg" : null; @@ -20,5 +21,19 @@ => iconId != null ? $"{DiscordConfig.CDNUrl}channel-icons/{channelId}/{iconId}.jpg" : null; public static string GetEmojiUrl(ulong emojiId) => $"{DiscordConfig.CDNUrl}emojis/{emojiId}.png"; + + private static string FormatToExtension(ImageFormat format, string imageId) + { + if (format == ImageFormat.Auto) + format = imageId.StartsWith("a_") ? ImageFormat.Gif : ImageFormat.Png; + switch (format) + { + case ImageFormat.Gif: return "gif"; + case ImageFormat.Jpeg: return "jpeg"; + case ImageFormat.Png: return "png"; + case ImageFormat.WebP: return "webp"; + default: throw new ArgumentException(nameof(format)); + } + } } } diff --git a/src/Discord.Net.Core/Entities/Users/AvatarFormat.cs b/src/Discord.Net.Core/Entities/ImageFormat.cs similarity index 78% rename from src/Discord.Net.Core/Entities/Users/AvatarFormat.cs rename to src/Discord.Net.Core/Entities/ImageFormat.cs index ef9e4b375..302da79c8 100644 --- a/src/Discord.Net.Core/Entities/Users/AvatarFormat.cs +++ b/src/Discord.Net.Core/Entities/ImageFormat.cs @@ -1,6 +1,6 @@ namespace Discord { - public enum AvatarFormat + public enum ImageFormat { Auto, WebP, diff --git a/src/Discord.Net.Core/Entities/Users/IUser.cs b/src/Discord.Net.Core/Entities/Users/IUser.cs index 4d36295f3..62060da22 100644 --- a/src/Discord.Net.Core/Entities/Users/IUser.cs +++ b/src/Discord.Net.Core/Entities/Users/IUser.cs @@ -7,7 +7,7 @@ namespace Discord /// Gets the id of this user's avatar. string AvatarId { get; } /// Gets the url to this user's avatar. - string GetAvatarUrl(AvatarFormat format = AvatarFormat.Auto, ushort size = 128); + string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128); /// Gets the per-username unique id for this user. string Discriminator { get; } /// Gets the per-username unique id for this user. diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index 4d7ab5d15..0acfe3ddf 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -13,7 +13,8 @@ namespace Discord.Rest public ushort DiscriminatorValue { get; private set; } public string AvatarId { get; private set; } - public string GetAvatarUrl(AvatarFormat format = AvatarFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); + public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) + => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); public DateTimeOffset CreatedAt => DateTimeUtils.FromSnowflake(Id); public string Discriminator => DiscriminatorValue.ToString("D4"); public string Mention => MentionUtils.MentionUser(Id); diff --git a/src/Discord.Net.Rpc/Entities/Users/RpcUser.cs b/src/Discord.Net.Rpc/Entities/Users/RpcUser.cs index 24c715491..daf299e2a 100644 --- a/src/Discord.Net.Rpc/Entities/Users/RpcUser.cs +++ b/src/Discord.Net.Rpc/Entities/Users/RpcUser.cs @@ -14,7 +14,8 @@ namespace Discord.Rpc public ushort DiscriminatorValue { get; private set; } public string AvatarId { get; private set; } - public string GetAvatarUrl(AvatarFormat format = AvatarFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); + public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) + => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); public DateTimeOffset CreatedAt => DateTimeUtils.FromSnowflake(Id); public string Discriminator => DiscriminatorValue.ToString("D4"); public string Mention => MentionUtils.MentionUser(Id); diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index 5a0c22d36..5c73e3b6a 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -15,7 +15,8 @@ namespace Discord.WebSocket internal abstract SocketGlobalUser GlobalUser { get; } internal abstract SocketPresence Presence { get; set; } - public string GetAvatarUrl(AvatarFormat format = AvatarFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); + public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) + => CDN.GetUserAvatarUrl(Id, AvatarId, size, format); public DateTimeOffset CreatedAt => DateTimeUtils.FromSnowflake(Id); public string Discriminator => DiscriminatorValue.ToString("D4"); public string Mention => MentionUtils.MentionUser(Id);