iterate over all models to validate and package up aggregated results

This commit is contained in:
Collin M. Barrett 2019-07-01 16:31:54 -05:00
parent 6475687ec7
commit 7d1d5b82bc
3 changed files with 45 additions and 6 deletions

View file

@ -0,0 +1,17 @@
using System.Collections.Generic;
namespace FilterLists.Agent.Features.Urls
{
public class DataFileUrlValidationResults
{
public DataFileUrlValidationResults(string dataFileName, IEnumerable<UrlValidationResult> results)
{
DataFileName = dataFileName;
Results = results;
}
public string DataFileName { get; }
public IEnumerable<UrlValidationResult> Results { get; }
}
}

View file

@ -1,4 +1,6 @@
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using FilterLists.Agent.Core.Interfaces;
using FilterLists.Agent.Features.Urls.Models;
@ -25,12 +27,32 @@ public Handler(IMediator mediator, IUrlsRepository urlsRepository)
protected override async Task Handle(Command request, CancellationToken cancellationToken)
{
var results = new List<DataFileUrlValidationResults>();
var licenseUrls = await _repo.GetAllAsync<LicenseUrls>();
var licenseUrlErrors = (await _mediator.Send(new ValidateUrls.Command(licenseUrls), cancellationToken)).ToList();
if (licenseUrlErrors.Any())
results.Add(new DataFileUrlValidationResults("License.json", licenseUrlErrors));
var listUrls = await _repo.GetAllAsync<ListUrls>();
var listUrlErrors = (await _mediator.Send(new ValidateUrls.Command(listUrls), cancellationToken)).ToList();
if (listUrlErrors.Any())
results.Add(new DataFileUrlValidationResults("FilterList.json", listUrlErrors));
var maintainerUrls = await _repo.GetAllAsync<MaintainerUrls>();
var errors = await _mediator.Send(new ValidateUrls.Command(maintainerUrls), cancellationToken);
var maintainerUrlErrors = (await _mediator.Send(new ValidateUrls.Command(maintainerUrls), cancellationToken)).ToList();
if (maintainerUrlErrors.Any())
results.Add(new DataFileUrlValidationResults("Maintainer.json", maintainerUrlErrors));
//TODO: validate if http can be changed to https
var softwareUrls = await _repo.GetAllAsync<SoftwareUrls>();
var softwareUrlErrors = (await _mediator.Send(new ValidateUrls.Command(softwareUrls), cancellationToken)).ToList();
if (softwareUrlErrors.Any())
results.Add(new DataFileUrlValidationResults("Software.json", softwareUrlErrors));
//TODO: iterate through each IEntityUrl impl
var syntaxUrls = await _repo.GetAllAsync<SyntaxUrls>();
var syntaxUrlErrors = (await _mediator.Send(new ValidateUrls.Command(syntaxUrls), cancellationToken)).ToList();
if (syntaxUrlErrors.Any())
results.Add(new DataFileUrlValidationResults("Syntax.json", syntaxUrlErrors));
//TODO: create or edit GitHub issue with results
}

View file

@ -16,8 +16,8 @@ public static async Task Main()
{
BuildServiceProvider();
var mediator = _serviceProvider.GetService<IMediator>();
//await mediator.Send(new CaptureLists.Command());
await mediator.Send(new ValidateAllUrls.Command());
await mediator.Send(new CaptureLists.Command());
//await mediator.Send(new ValidateAllUrls.Command());
}
private static void BuildServiceProvider()