wabbajack/Wabbajack.BuildServer/BackendServices/ValidateNonNexusArchives.cs

42 lines
1.3 KiB
C#
Raw Normal View History

2020-04-12 04:18:21 +00:00
using System;
2020-04-28 21:43:42 +00:00
using System.Linq;
2020-04-12 04:18:21 +00:00
using System.Threading.Tasks;
using Wabbajack.BuildServer.Model.Models;
using Wabbajack.Common;
2020-04-28 21:43:42 +00:00
using Wabbajack.Lib.Downloaders;
2020-04-12 04:18:21 +00:00
namespace Wabbajack.BuildServer.BackendServices
{
public class ValidateNonNexusArchives : ABackendService
{
public ValidateNonNexusArchives(SqlService sql, AppSettings settings) : base(sql, settings, TimeSpan.FromHours(2))
{
}
public override async Task Execute()
{
2020-04-28 21:43:42 +00:00
Utils.Log("Updating Non Nexus archives");
2020-04-12 04:18:21 +00:00
var archives = await Sql.GetNonNexusModlistArchives();
2020-04-28 21:43:42 +00:00
Utils.Log($"Validating {archives.Count} Non-Nexus archives.");
2020-04-12 04:18:21 +00:00
using var queue = new WorkQueue();
2020-04-28 21:43:42 +00:00
await DownloadDispatcher.PrepareAll(archives.Select(a => a.State));
2020-04-12 04:18:21 +00:00
var results = await archives.PMap(queue, async archive =>
{
try
{
var isValid = await archive.State.Verify(archive);
return (Archive: archive, IsValid: isValid);
}
2020-04-28 21:43:42 +00:00
catch (Exception ex)
{
2020-04-28 21:43:42 +00:00
Utils.Log($"Got Validation error {ex}");
return (Archive: archive, IsValid: false);
}
2020-04-12 04:18:21 +00:00
});
await Sql.UpdateNonNexusModlistArchivesStatus(results);
}
}
}