From ffe3949769d337217e3f63654ccdd1a948aeb0e3 Mon Sep 17 00:00:00 2001 From: Jaex Date: Mon, 26 Mar 2018 08:04:55 +0300 Subject: [PATCH] Added support to escape custom uploader argument and header patterns --- .../Helpers/CustomUploaderArgumentInput.cs | 5 +- ShareX.UploadersLib/Helpers/EscapeHelper.cs | 53 +++++++++++++++++++ .../ShareX.UploadersLib.csproj | 1 + 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 ShareX.UploadersLib/Helpers/EscapeHelper.cs diff --git a/ShareX.UploadersLib/Helpers/CustomUploaderArgumentInput.cs b/ShareX.UploadersLib/Helpers/CustomUploaderArgumentInput.cs index 1d8a62fcc..e2b9e1783 100644 --- a/ShareX.UploadersLib/Helpers/CustomUploaderArgumentInput.cs +++ b/ShareX.UploadersLib/Helpers/CustomUploaderArgumentInput.cs @@ -41,7 +41,10 @@ public CustomUploaderArgumentInput(string filename, string input) public string Parse(string arg) { - arg = NameParser.Parse(NameParserType.Text, arg); + NameParser nameParser = new NameParser(NameParserType.Text); + + EscapeHelper escapeHelper = new EscapeHelper(); + arg = escapeHelper.Parse(arg, nameParser.Parse); arg = arg.BatchReplace(new Dictionary() { diff --git a/ShareX.UploadersLib/Helpers/EscapeHelper.cs b/ShareX.UploadersLib/Helpers/EscapeHelper.cs new file mode 100644 index 000000000..47dfc8ac7 --- /dev/null +++ b/ShareX.UploadersLib/Helpers/EscapeHelper.cs @@ -0,0 +1,53 @@ +#region License Information (GPL v3) + +/* + ShareX - A program that allows you to take screenshots and share any file type + Copyright (c) 2007-2018 ShareX Team + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + Optionally you can also view the license at . +*/ + +#endregion License Information (GPL v3) + +using ShareX.HelpersLib; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShareX.UploadersLib +{ + public class EscapeHelper + { + public string EscapeCharacter { get; set; } = @"\"; + public string EscapeableCharacter { get; set; } = "%"; + + private string escapeCharacterReserve = Helpers.GetRandomAlphanumeric(32); + private string escapeableCharacterReserve = Helpers.GetRandomAlphanumeric(32); + + public string Parse(string input, Func action) + { + input = input.Replace(EscapeCharacter + EscapeCharacter, escapeCharacterReserve); + input = input.Replace(EscapeCharacter + EscapeableCharacter, escapeableCharacterReserve); + input = action(input); + input = input.Replace(escapeableCharacterReserve, EscapeableCharacter); + input = input.Replace(escapeCharacterReserve, EscapeCharacter); + return input; + } + } +} \ No newline at end of file diff --git a/ShareX.UploadersLib/ShareX.UploadersLib.csproj b/ShareX.UploadersLib/ShareX.UploadersLib.csproj index 8e11b4d96..4b4356605 100644 --- a/ShareX.UploadersLib/ShareX.UploadersLib.csproj +++ b/ShareX.UploadersLib/ShareX.UploadersLib.csproj @@ -238,6 +238,7 @@ +