You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

CDN.cs 2.6 kB

9 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. namespace Discord
  3. {
  4. public static class CDN
  5. {
  6. public static string GetApplicationIconUrl(ulong appId, string iconId)
  7. => iconId != null ? $"{DiscordConfig.CDNUrl}app-icons/{appId}/{iconId}.jpg" : null;
  8. public static string GetUserAvatarUrl(ulong userId, string avatarId, ushort size, ImageFormat format)
  9. {
  10. if (avatarId == null)
  11. return null;
  12. string extension = FormatToExtension(format, avatarId);
  13. return $"{DiscordConfig.CDNUrl}avatars/{userId}/{avatarId}.{extension}?size={size}";
  14. }
  15. public static string GetDefaultUserAvatarUrl(ushort discriminator)
  16. {
  17. return $"{DiscordConfig.CDNUrl}embed/avatars/{discriminator % 5}.png";
  18. }
  19. public static string GetGuildIconUrl(ulong guildId, string iconId)
  20. => iconId != null ? $"{DiscordConfig.CDNUrl}icons/{guildId}/{iconId}.jpg" : null;
  21. public static string GetGuildSplashUrl(ulong guildId, string splashId)
  22. => splashId != null ? $"{DiscordConfig.CDNUrl}splashes/{guildId}/{splashId}.jpg" : null;
  23. public static string GetChannelIconUrl(ulong channelId, string iconId)
  24. => iconId != null ? $"{DiscordConfig.CDNUrl}channel-icons/{channelId}/{iconId}.jpg" : null;
  25. public static string GetEmojiUrl(ulong emojiId, bool animated)
  26. => $"{DiscordConfig.CDNUrl}emojis/{emojiId}.{(animated ? "gif" : "png")}";
  27. public static string GetRichAssetUrl(ulong appId, string assetId, ushort size, ImageFormat format)
  28. {
  29. string extension = FormatToExtension(format, "");
  30. return $"{DiscordConfig.CDNUrl}app-assets/{appId}/{assetId}.{extension}?size={size}";
  31. }
  32. public static string GetSpotifyAlbumArtUrl(string albumArtId)
  33. => $"https://i.scdn.co/image/{albumArtId}";
  34. private static string FormatToExtension(ImageFormat format, string imageId)
  35. {
  36. if (format == ImageFormat.Auto)
  37. format = imageId.StartsWith("a_") ? ImageFormat.Gif : ImageFormat.Png;
  38. switch (format)
  39. {
  40. case ImageFormat.Gif:
  41. return "gif";
  42. case ImageFormat.Jpeg:
  43. return "jpeg";
  44. case ImageFormat.Png:
  45. return "png";
  46. case ImageFormat.WebP:
  47. return "webp";
  48. default:
  49. throw new ArgumentException(nameof(format));
  50. }
  51. }
  52. }
  53. }