From 80e6d5b18e07047360a836c5549757c1beeeacb8 Mon Sep 17 00:00:00 2001 From: kittens Date: Sat, 18 Jul 2020 06:51:31 -0400 Subject: [PATCH] Fix URL handling when the filename contains multiple known extensions (#196) --- PluralKit.Bot/Commands/Avatars/ContextAvatarExt.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/PluralKit.Bot/Commands/Avatars/ContextAvatarExt.cs b/PluralKit.Bot/Commands/Avatars/ContextAvatarExt.cs index 382d064d..3c34070d 100644 --- a/PluralKit.Bot/Commands/Avatars/ContextAvatarExt.cs +++ b/PluralKit.Bot/Commands/Avatars/ContextAvatarExt.cs @@ -14,7 +14,7 @@ namespace PluralKit.Bot // Rewrite cdn.discordapp.com URLs to media.discordapp.net for jpg/png files // This lets us add resizing parameters to "borrow" their media proxy server to downsize the image // which in turn makes it more likely to be underneath the size limit! - private static readonly Regex DiscordCdnUrl = new Regex(@"^https?://(?:cdn\.discordapp\.com|media\.discordapp\.net)/attachments/(\d{17,19})/(\d{17,19})/([^\.?/]+)\.(png|jpg|jpeg).*"); + private static readonly Regex DiscordCdnUrl = new Regex(@"^https?://(?:cdn\.discordapp\.com|media\.discordapp\.net)/attachments/(\d{17,19})/(\d{17,19})/([^/\\&\?]+)\.(png|jpg|jpeg)(\?.*)?$"); private static readonly string DiscordMediaUrlReplacement = "https://media.discordapp.net/attachments/$1/$2/$3.$4?width=256&height=256"; public static async Task MatchImage(this Context ctx) @@ -39,7 +39,6 @@ namespace PluralKit.Bot if (uri.Scheme != "http" && uri.Scheme != "https") throw Errors.InvalidUrl(arg); - return new ParsedImage {Url = TryRewriteCdnUrl(uri.ToString()), Source = AvatarSource.Url}; }