mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-30 01:07:21 +13:00
Added MinParameterLength
This commit is contained in:
parent
e0904c0488
commit
8c386bbbbf
9 changed files with 39 additions and 26 deletions
|
@ -29,6 +29,8 @@ internal abstract class CustomUploaderFunction
|
|||
{
|
||||
public abstract string Name { get; }
|
||||
|
||||
public virtual int MinParameterLength { get; } = 0;
|
||||
|
||||
public abstract string Call(ShareXCustomUploaderSyntaxParser parser, string[] parameters);
|
||||
}
|
||||
}
|
|
@ -32,6 +32,8 @@ internal class CustomUploaderFunctionBase64 : CustomUploaderFunction
|
|||
{
|
||||
public override string Name { get; } = "base64";
|
||||
|
||||
public override int MinParameterLength { get; } = 1;
|
||||
|
||||
public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] parameters)
|
||||
{
|
||||
string text = parameters[0];
|
||||
|
|
|
@ -30,6 +30,8 @@ internal class CustomUploaderFunctionHeader : CustomUploaderFunction
|
|||
{
|
||||
public override string Name { get; } = "header";
|
||||
|
||||
public override int MinParameterLength { get; } = 1;
|
||||
|
||||
public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] parameters)
|
||||
{
|
||||
string header = parameters[0];
|
||||
|
|
|
@ -32,6 +32,8 @@ internal class CustomUploaderFunctionJson : CustomUploaderFunction
|
|||
{
|
||||
public override string Name { get; } = "json";
|
||||
|
||||
public override int MinParameterLength { get; } = 1;
|
||||
|
||||
public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] parameters)
|
||||
{
|
||||
// https://goessner.net/articles/JsonPath/
|
||||
|
|
|
@ -32,14 +32,11 @@ internal class CustomUploaderFunctionRandom : CustomUploaderFunction
|
|||
{
|
||||
public override string Name { get; } = "random";
|
||||
|
||||
public override int MinParameterLength { get; } = 2;
|
||||
|
||||
public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] parameters)
|
||||
{
|
||||
if (parameters.Length > 0)
|
||||
{
|
||||
return RandomFast.Pick(parameters);
|
||||
}
|
||||
|
||||
return null;
|
||||
return RandomFast.Pick(parameters);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -34,37 +34,36 @@ internal class CustomUploaderFunctionRegex : CustomUploaderFunction
|
|||
{
|
||||
public override string Name { get; } = "regex";
|
||||
|
||||
public override int MinParameterLength { get; } = 1;
|
||||
|
||||
public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] parameters)
|
||||
{
|
||||
if (parameters.Length > 0)
|
||||
string pattern = parameters[0];
|
||||
|
||||
if (!string.IsNullOrEmpty(pattern))
|
||||
{
|
||||
string pattern = parameters[0];
|
||||
Match match = Regex.Match(parser.ResponseInfo.ResponseText, pattern);
|
||||
|
||||
if (!string.IsNullOrEmpty(pattern))
|
||||
if (match.Success)
|
||||
{
|
||||
Match match = Regex.Match(parser.ResponseInfo.ResponseText, pattern);
|
||||
|
||||
if (match.Success)
|
||||
if (parameters.Length > 1)
|
||||
{
|
||||
if (parameters.Length > 1)
|
||||
{
|
||||
string group = parameters[1];
|
||||
string group = parameters[1];
|
||||
|
||||
if (!string.IsNullOrEmpty(group))
|
||||
if (!string.IsNullOrEmpty(group))
|
||||
{
|
||||
if (int.TryParse(group, out int groupNumber))
|
||||
{
|
||||
if (int.TryParse(group, out int groupNumber))
|
||||
{
|
||||
return match.Groups[groupNumber].Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
return match.Groups[group].Value;
|
||||
}
|
||||
return match.Groups[groupNumber].Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
return match.Groups[group].Value;
|
||||
}
|
||||
}
|
||||
|
||||
return match.Value;
|
||||
}
|
||||
|
||||
return match.Value;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,8 @@ internal class CustomUploaderFunctionSelect : CustomUploaderFunction
|
|||
{
|
||||
public override string Name { get; } = "select";
|
||||
|
||||
public override int MinParameterLength { get; } = 1;
|
||||
|
||||
public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] parameters)
|
||||
{
|
||||
string[] values = parameters.Where(x => !string.IsNullOrEmpty(x)).ToArray();
|
||||
|
|
|
@ -33,6 +33,8 @@ internal class CustomUploaderFunctionXml : CustomUploaderFunction
|
|||
{
|
||||
public override string Name { get; } = "xml";
|
||||
|
||||
public override int MinParameterLength { get; } = 1;
|
||||
|
||||
public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] parameters)
|
||||
{
|
||||
// https://www.w3schools.com/xml/xpath_syntax.asp
|
||||
|
|
|
@ -74,6 +74,11 @@ protected override string CallFunction(string functionName, string[] parameters
|
|||
{
|
||||
if (function.Name.Equals(functionName, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (function.MinParameterLength > 0 && (parameters == null || parameters.Length < function.MinParameterLength))
|
||||
{
|
||||
throw new Exception($"Minimum parameter length for function \"{function.Name}\" is {function.MinParameterLength}.");
|
||||
}
|
||||
|
||||
return function.Call(this, parameters);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue