Use abstract static member, add publish script

This commit is contained in:
Michael Bucari-Tovo 2022-06-25 16:48:23 -06:00
parent 1668b7c9a1
commit d48a74912a
20 changed files with 66 additions and 84 deletions

View file

@ -154,15 +154,16 @@ namespace AudibleUtilities
#if DEBUG
//System.IO.File.WriteAllText(library_json, AudibleApi.Common.Converter.ToJson(items));
#endif
var validators = new List<IValidator>();
validators.AddRange(Validators.GetValidators());
foreach (var v in validators)
{
var exceptions = v.Validate(items);
if (exceptions is not null && exceptions.Any())
throw new AggregateException(exceptions);
}
var exceptions = new List<Exception>();
exceptions.AddRange(IValidator.Validate<LibraryValidator>(items));
exceptions.AddRange(IValidator.Validate<BookValidator>(items));
exceptions.AddRange(IValidator.Validate<CategoryValidator>(items));
exceptions.AddRange(IValidator.Validate<ContributorValidator>(items));
exceptions.AddRange(IValidator.Validate<SeriesValidator>(items));
if (exceptions.Any())
throw new AggregateException(exceptions);
return items;
}

View file

@ -5,25 +5,16 @@ using AudibleApi.Common;
namespace AudibleUtilities
{
public static class Validators
{
public static IValidator[] GetValidators()
=> new IValidator[]
{
new LibraryValidator(),
new BookValidator(),
new CategoryValidator(),
new ContributorValidator(),
new SeriesValidator(),
};
}
public interface IValidator
{
IEnumerable<Exception> Validate(IEnumerable<Item> items);
public static abstract IEnumerable<Exception> Validate(IEnumerable<Item> items);
public static IEnumerable<Exception> Validate<T>(IEnumerable<Item> items)
where T : IValidator
=> T.Validate(items);
}
public class LibraryValidator : IValidator
{
public IEnumerable<Exception> Validate(IEnumerable<Item> items)
public static IEnumerable<Exception> Validate(IEnumerable<Item> items)
{
var exceptions = new List<Exception>();
@ -37,7 +28,7 @@ namespace AudibleUtilities
}
public class BookValidator : IValidator
{
public IEnumerable<Exception> Validate(IEnumerable<Item> items)
public static IEnumerable<Exception> Validate(IEnumerable<Item> items)
{
var exceptions = new List<Exception>();
@ -55,7 +46,7 @@ namespace AudibleUtilities
}
public class CategoryValidator : IValidator
{
public IEnumerable<Exception> Validate(IEnumerable<Item> items)
public static IEnumerable<Exception> Validate(IEnumerable<Item> items)
{
var exceptions = new List<Exception>();
@ -70,7 +61,7 @@ namespace AudibleUtilities
}
public class ContributorValidator : IValidator
{
public IEnumerable<Exception> Validate(IEnumerable<Item> items)
public static IEnumerable<Exception> Validate(IEnumerable<Item> items)
{
var exceptions = new List<Exception>();
@ -84,7 +75,7 @@ namespace AudibleUtilities
}
public class SeriesValidator : IValidator
{
public IEnumerable<Exception> Validate(IEnumerable<Item> items)
public static IEnumerable<Exception> Validate(IEnumerable<Item> items)
{
var exceptions = new List<Exception>();

View file

@ -2,12 +2,11 @@
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>
<ItemGroup>
<!-- <PackageReference Include="AudibleApi" Version="4.2.2.1" /> -->
<ProjectReference Include="..\..\..\audible api\AudibleApi\AudibleApi\AudibleApi.csproj" />
<PackageReference Include="AudibleApi" Version="4.2.2.1" />
</ItemGroup>