mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-04 12:14:45 +13:00
Refactoring custom uploader syntax parsing
This commit is contained in:
parent
7f0e7e34dd
commit
421ea7fc86
1 changed files with 61 additions and 58 deletions
|
@ -198,7 +198,6 @@ private string ParseURL(string url, bool output)
|
|||
StringBuilder result = new StringBuilder();
|
||||
|
||||
bool syntaxStart = false;
|
||||
CustomUploaderResponseParseType parseType = CustomUploaderResponseParseType.Regex;
|
||||
int syntaxStartIndex = 0;
|
||||
|
||||
for (int i = 0; i < url.Length; i++)
|
||||
|
@ -208,72 +207,23 @@ private string ParseURL(string url, bool output)
|
|||
if (!syntaxStart)
|
||||
{
|
||||
syntaxStart = true;
|
||||
|
||||
string syntaxCheck = url.Substring(i + 1);
|
||||
|
||||
if (syntaxCheck.StartsWith("regex:", StringComparison.InvariantCultureIgnoreCase)) // Example: $regex:1,1$
|
||||
{
|
||||
parseType = CustomUploaderResponseParseType.Regex;
|
||||
syntaxStartIndex = i + 7;
|
||||
}
|
||||
else if (syntaxCheck.StartsWith("json:", StringComparison.InvariantCultureIgnoreCase)) // Example: $json:Files[0].URL$
|
||||
{
|
||||
parseType = CustomUploaderResponseParseType.Json;
|
||||
syntaxStartIndex = i + 6;
|
||||
}
|
||||
else if (syntaxCheck.StartsWith("xml:", StringComparison.InvariantCultureIgnoreCase)) // Example: $xml:/Files/File[1]/URL$
|
||||
{
|
||||
parseType = CustomUploaderResponseParseType.Xml;
|
||||
syntaxStartIndex = i + 5;
|
||||
}
|
||||
else if (syntaxCheck.StartsWith("random:", StringComparison.InvariantCultureIgnoreCase)) // Example: $random:domain1.com|domain2.com$
|
||||
{
|
||||
parseType = CustomUploaderResponseParseType.Random;
|
||||
syntaxStartIndex = i + 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
parseType = CustomUploaderResponseParseType.Regex;
|
||||
syntaxStartIndex = i + 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string parseText = url.Substring(syntaxStartIndex, i - syntaxStartIndex).Trim();
|
||||
|
||||
if (!string.IsNullOrEmpty(parseText))
|
||||
{
|
||||
string resultText = null;
|
||||
|
||||
if (output)
|
||||
{
|
||||
switch (parseType)
|
||||
{
|
||||
default:
|
||||
case CustomUploaderResponseParseType.Regex:
|
||||
resultText = ParseRegexSyntax(parseText);
|
||||
break;
|
||||
case CustomUploaderResponseParseType.Json:
|
||||
resultText = ParseJsonSyntax(parseText);
|
||||
break;
|
||||
case CustomUploaderResponseParseType.Xml:
|
||||
resultText = ParseXmlSyntax(parseText);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (parseType == CustomUploaderResponseParseType.Random)
|
||||
{
|
||||
resultText = ParseRandomSyntax(parseText);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(resultText))
|
||||
{
|
||||
result.Append(resultText);
|
||||
}
|
||||
}
|
||||
|
||||
syntaxStart = false;
|
||||
int syntaxLength = i - syntaxStartIndex;
|
||||
|
||||
if (syntaxLength > 0)
|
||||
{
|
||||
string syntax = url.Substring(syntaxStartIndex, syntaxLength);
|
||||
string syntaxResult = ParseSyntax(syntax, output);
|
||||
|
||||
if (!string.IsNullOrEmpty(syntaxResult))
|
||||
{
|
||||
result.Append(syntaxResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!syntaxStart)
|
||||
|
@ -285,6 +235,59 @@ private string ParseURL(string url, bool output)
|
|||
return result.ToString();
|
||||
}
|
||||
|
||||
private string ParseSyntax(string syntax, bool output)
|
||||
{
|
||||
CustomUploaderResponseParseType parseType;
|
||||
|
||||
if (syntax.StartsWith("regex:", StringComparison.InvariantCultureIgnoreCase)) // Example: $regex:1,1$
|
||||
{
|
||||
parseType = CustomUploaderResponseParseType.Regex;
|
||||
syntax = syntax.Substring(6);
|
||||
}
|
||||
else if (syntax.StartsWith("json:", StringComparison.InvariantCultureIgnoreCase)) // Example: $json:Files[0].URL$
|
||||
{
|
||||
parseType = CustomUploaderResponseParseType.Json;
|
||||
syntax = syntax.Substring(5);
|
||||
}
|
||||
else if (syntax.StartsWith("xml:", StringComparison.InvariantCultureIgnoreCase)) // Example: $xml:/Files/File[1]/URL$
|
||||
{
|
||||
parseType = CustomUploaderResponseParseType.Xml;
|
||||
syntax = syntax.Substring(4);
|
||||
}
|
||||
else if (syntax.StartsWith("random:", StringComparison.InvariantCultureIgnoreCase)) // Example: $random:domain1.com|domain2.com$
|
||||
{
|
||||
parseType = CustomUploaderResponseParseType.Random;
|
||||
syntax = syntax.Substring(7);
|
||||
}
|
||||
else // Example: $1,1$
|
||||
{
|
||||
parseType = CustomUploaderResponseParseType.Regex;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(syntax))
|
||||
{
|
||||
if (output)
|
||||
{
|
||||
switch (parseType)
|
||||
{
|
||||
case CustomUploaderResponseParseType.Regex:
|
||||
return ParseRegexSyntax(syntax);
|
||||
case CustomUploaderResponseParseType.Json:
|
||||
return ParseJsonSyntax(syntax);
|
||||
case CustomUploaderResponseParseType.Xml:
|
||||
return ParseXmlSyntax(syntax);
|
||||
}
|
||||
}
|
||||
|
||||
if (parseType == CustomUploaderResponseParseType.Random)
|
||||
{
|
||||
return ParseRandomSyntax(syntax);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private string ParseRegexSyntax(string syntax)
|
||||
{
|
||||
string regexIndexString = "";
|
||||
|
|
Loading…
Reference in a new issue