mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-30 01:07:21 +13:00
Handle syntax usage for body data
This commit is contained in:
parent
9ccd7be623
commit
c42547370b
3 changed files with 30 additions and 25 deletions
|
@ -168,7 +168,7 @@ public static string ReplaceAll(this string text, string search, Func<string> re
|
|||
return text;
|
||||
}
|
||||
|
||||
public static string BatchReplace(this string text, Dictionary<string, string> replace)
|
||||
public static string BatchReplace(this string text, Dictionary<string, string> replace, StringComparison comparisonType = StringComparison.CurrentCulture)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
|
@ -180,15 +180,16 @@ public static string BatchReplace(this string text, Dictionary<string, string> r
|
|||
|
||||
foreach (KeyValuePair<string, string> entry in replace)
|
||||
{
|
||||
if (current.StartsWith(entry.Key))
|
||||
if (current.StartsWith(entry.Key, comparisonType))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(entry.Value))
|
||||
{
|
||||
sb.Append(entry.Value);
|
||||
}
|
||||
|
||||
i += entry.Key.Length - 1;
|
||||
replaced = true;
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -193,12 +193,32 @@ public string GetContentType()
|
|||
|
||||
public string GetData(CustomUploaderInput input)
|
||||
{
|
||||
CustomUploaderSyntaxParser parser = new CustomUploaderSyntaxParser(input);
|
||||
parser.UseNameParser = true;
|
||||
parser.JSONEncode = Body == CustomUploaderBody.JSON;
|
||||
parser.XMLEncode = Body == CustomUploaderBody.XML;
|
||||
NameParser nameParser = new NameParser(NameParserType.Text);
|
||||
string result = nameParser.Parse(Data);
|
||||
|
||||
return parser.Parse(Data);
|
||||
Dictionary<string, string> replace = new Dictionary<string, string>();
|
||||
replace.Add("{input}", EncodeBodyData(input.Input));
|
||||
replace.Add("{filename}", EncodeBodyData(input.FileName));
|
||||
result = result.BatchReplace(replace, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private string EncodeBodyData(string input)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(input))
|
||||
{
|
||||
if (Body == CustomUploaderBody.JSON)
|
||||
{
|
||||
return URLHelpers.JSONEncode(input);
|
||||
}
|
||||
else if (Body == CustomUploaderBody.XML)
|
||||
{
|
||||
return URLHelpers.XMLEncode(input);
|
||||
}
|
||||
}
|
||||
|
||||
return input;
|
||||
}
|
||||
|
||||
public string GetFileFormName()
|
||||
|
|
|
@ -37,8 +37,6 @@ public class CustomUploaderSyntaxParser : ShareXSyntaxParser
|
|||
public string Input { get; set; }
|
||||
public ResponseInfo ResponseInfo { get; set; }
|
||||
public bool URLEncode { get; set; } // Only URL encodes file name and input
|
||||
public bool JSONEncode { get; set; }
|
||||
public bool XMLEncode { get; set; }
|
||||
public bool UseNameParser { get; set; }
|
||||
public NameParserType NameParserType { get; set; } = NameParserType.Text;
|
||||
|
||||
|
@ -71,21 +69,7 @@ protected override string CallFunction(string functionName, string[] parameters)
|
|||
{
|
||||
if (function.Name.Equals(functionName, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
string result = function.Call(this, parameters);
|
||||
|
||||
if (!string.IsNullOrEmpty(result))
|
||||
{
|
||||
if (JSONEncode)
|
||||
{
|
||||
result = URLHelpers.JSONEncode(result);
|
||||
}
|
||||
else if (XMLEncode)
|
||||
{
|
||||
result = URLHelpers.XMLEncode(result);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
return function.Call(this, parameters);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue