From 4b1150331911837aedb93800b896b57f70131d45 Mon Sep 17 00:00:00 2001 From: halgari Date: Sun, 15 Dec 2019 14:52:12 -0700 Subject: [PATCH] Filter gallery by valid lists pulled from the validation service. --- .../ListValidationService.cs | 10 ----- Wabbajack.Common/Consts.cs | 2 +- .../ModListRegistry/ModListMetadata.cs | 37 +++++++++++++++++-- Wabbajack/View Models/ModListGalleryVM.cs | 1 + 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/Wabbajack.CacheServer/ListValidationService.cs b/Wabbajack.CacheServer/ListValidationService.cs index f6c16cc9..8f053437 100644 --- a/Wabbajack.CacheServer/ListValidationService.cs +++ b/Wabbajack.CacheServer/ListValidationService.cs @@ -28,16 +28,6 @@ namespace Wabbajack.CacheServer public bool HasFailures { get; set; } } - public class ModlistSummary - { - public string Name; - public DateTime Checked; - public int Failed; - public int Passed; - public string Link => $"/lists/status/{Name}.json"; - public string Report => $"/lists/status/{Name}.html"; - } - public static Dictionary ModLists { get; set; } public ListValidationService() : base("/lists") diff --git a/Wabbajack.Common/Consts.cs b/Wabbajack.Common/Consts.cs index c839b5f0..630741d4 100644 --- a/Wabbajack.Common/Consts.cs +++ b/Wabbajack.Common/Consts.cs @@ -73,7 +73,7 @@ namespace Wabbajack.Common public static string ModPermissionsURL = "https://raw.githubusercontent.com/wabbajack-tools/opt-out-lists/master/NexusModPermissions.yml"; public static string ServerWhitelistURL = "https://raw.githubusercontent.com/wabbajack-tools/opt-out-lists/master/ServerWhitelist.yml"; public static string ModlistMetadataURL = "https://raw.githubusercontent.com/wabbajack-tools/mod-lists/master/modlists.json"; - + public static string ModlistSummaryURL = "http://build.wabbajack.org/lists/status.json"; public static string UserAgent { get diff --git a/Wabbajack.Lib/ModListRegistry/ModListMetadata.cs b/Wabbajack.Lib/ModListRegistry/ModListMetadata.cs index fded6d8a..311a7cbc 100644 --- a/Wabbajack.Lib/ModListRegistry/ModListMetadata.cs +++ b/Wabbajack.Lib/ModListRegistry/ModListMetadata.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; using System.Net.Http; using System.Threading.Tasks; using System.Windows.Media.Imaging; @@ -34,6 +36,9 @@ namespace Wabbajack.Lib.ModListRegistry [JsonProperty("download_metadata")] public DownloadMetadata DownloadMetadata { get; set; } + [JsonIgnore] + public ModlistSummary ValidationSummary { get; set; } = new ModlistSummary(); + public class LinksObject { [JsonProperty("image")] @@ -60,8 +65,23 @@ namespace Wabbajack.Lib.ModListRegistry { var client = new HttpClient(); Utils.Log("Loading ModLists from Github"); - var result = await client.GetStringAsync(Consts.ModlistMetadataURL); - return result.FromJSONString>(); + var metadataResult = client.GetStringAsync(Consts.ModlistMetadataURL); + var summaryResult = client.GetStringAsync(Consts.ModlistSummaryURL); + + var metadata = (await metadataResult).FromJSONString>(); + try + { + var summaries = (await summaryResult).FromJSONString>().ToDictionary(d => d.Name); + + foreach (var data in metadata) + if (summaries.TryGetValue(data.Title, out var summary)) + data.ValidationSummary = summary; + } + catch (Exception ex) + { + } + + return metadata; } public bool NeedsDownload(string modlistPath) @@ -87,4 +107,15 @@ namespace Wabbajack.Lib.ModListRegistry } + public class ModlistSummary + { + public string Name; + public DateTime Checked; + public int Failed; + public int Passed; + public string Link => $"/lists/status/{Name}.json"; + public string Report => $"/lists/status/{Name}.html"; + public bool HasFailures => Failed > 0; + } + } diff --git a/Wabbajack/View Models/ModListGalleryVM.cs b/Wabbajack/View Models/ModListGalleryVM.cs index 7332446f..d1f7e4e0 100644 --- a/Wabbajack/View Models/ModListGalleryVM.cs +++ b/Wabbajack/View Models/ModListGalleryVM.cs @@ -39,6 +39,7 @@ namespace Wabbajack .SelectTask(async _ => { return (await ModlistMetadata.LoadFromGithub()) + .Where(m => !m.ValidationSummary.HasFailures) .AsObservableChangeSet(x => x.DownloadMetadata?.Hash ?? $"Fallback{missingHashFallbackCounter++}"); }) .Switch()