Added validators for voice id & voice name

This commit is contained in:
Tom 2024-10-17 19:06:02 +00:00
parent 39c6442126
commit c082054606
4 changed files with 56 additions and 0 deletions

7
Validators/IValidator.cs Normal file
View File

@ -0,0 +1,7 @@
namespace HermesSocketServer.Validators
{
public interface IValidator
{
bool Check(string? input);
}
}

View File

@ -0,0 +1,29 @@
using System.Text.RegularExpressions;
namespace HermesSocketServer.Validators
{
public class RegexValidator : IValidator
{
private readonly Regex _regex;
private readonly int _minimum;
private readonly int _maximum;
public RegexValidator(string regex, RegexOptions options, int minimum, int maximum) {
_regex = new Regex(regex, options | RegexOptions.Compiled);
_minimum = minimum;
_maximum = maximum;
}
public bool Check(string? input)
{
if (input == null)
throw new ArgumentNullException(nameof(input));
if (input.Length < _minimum)
throw new ArgumentException("Too short. Must be of length 8 or greater.", nameof(input));
if (input.Length > _maximum)
throw new ArgumentException("Too long. Must be of length 24 or less.", nameof(input));
return _regex.IsMatch(input);
}
}
}

View File

@ -0,0 +1,10 @@
using System.Text.RegularExpressions;
namespace HermesSocketServer.Validators
{
public class VoiceIdValidator : RegexValidator
{
public VoiceIdValidator()
: base("^[a-z0-9]{25}$", RegexOptions.IgnoreCase, 25, 25) { }
}
}

View File

@ -0,0 +1,10 @@
using System.Text.RegularExpressions;
namespace HermesSocketServer.Validators
{
public class VoiceNameValidator : RegexValidator
{
public VoiceNameValidator()
: base("^[a-z0-9_\\-]{2,32}$", RegexOptions.IgnoreCase, 2, 32) { }
}
}