diff --git a/Compression.BSA.Test/BSATests.cs b/Compression.BSA.Test/BSATests.cs index 60240739..cd8bcd64 100644 --- a/Compression.BSA.Test/BSATests.cs +++ b/Compression.BSA.Test/BSATests.cs @@ -47,7 +47,7 @@ namespace Compression.BSA.Test var state = new NexusDownloader.State { ModID = mod.ToString(), - GameName = game.MetaData().NexusName, + Game = game, FileID = file.file_id.ToString() }; await state.Download(src); diff --git a/Wabbajack.BuildServer/Controllers/ModlistUpdater.cs b/Wabbajack.BuildServer/Controllers/ModlistUpdater.cs index 06b8070d..2298e390 100644 --- a/Wabbajack.BuildServer/Controllers/ModlistUpdater.cs +++ b/Wabbajack.BuildServer/Controllers/ModlistUpdater.cs @@ -102,7 +102,7 @@ namespace Wabbajack.BuildServer.Controllers return NotFound("Original state not found"); var nexusState = state.State as NexusDownloader.State; - var nexusGame = GameRegistry.GetByFuzzyName(nexusState.GameName).NexusName; + var nexusGame = nexusState.Game.MetaData().NexusName; var mod_files = await Db.NexusModFiles.AsQueryable() .Where(f => f.Game == nexusGame && f.ModId == nexusState.ModID) .ToListAsync(); @@ -164,8 +164,7 @@ namespace Wabbajack.BuildServer.Controllers { var origSize = _settings.PathForArchive(srcHash).Size; var api = await NexusApiClient.Get(Request.Headers["apikey"].FirstOrDefault()); - var allMods = await api.GetModFiles(GameRegistry.GetByFuzzyName(state.GameName).Game, - int.Parse(state.ModID)); + var allMods = await api.GetModFiles(state.Game, int.Parse(state.ModID)); var archive = allMods.files.Where(m => !string.IsNullOrEmpty(m.category_name)) .OrderBy(s => Math.Abs((long)s.size - origSize)) .Select(s => new Archive { @@ -173,7 +172,7 @@ namespace Wabbajack.BuildServer.Controllers Size = (long)s.size, State = new NexusDownloader.State { - GameName = state.GameName, + Game = state.Game, ModID = state.ModID, FileID = s.file_id.ToString() }}).FirstOrDefault(); diff --git a/Wabbajack.BuildServer/Models/Jobs/EnqueueRecentFiles.cs b/Wabbajack.BuildServer/Models/Jobs/EnqueueRecentFiles.cs index 00a8742d..71205465 100644 --- a/Wabbajack.BuildServer/Models/Jobs/EnqueueRecentFiles.cs +++ b/Wabbajack.BuildServer/Models/Jobs/EnqueueRecentFiles.cs @@ -39,13 +39,13 @@ namespace Wabbajack.BuildServer.Models.Jobs { var files = await client.GetModFiles(GameRegistry.GetByNexusName(mod.Game).Game, (int)mod.ModId); - return (mod.Game, mod.ModId, files.files); + return (Game: GameRegistry.GetByFuzzyName(mod.Game).Game, mod.ModId, files.files); } catch (Exception) { return default; } - })).Where(t => t.Game != null).ToList(); + })).Where(t => t.Game != default).ToList(); var archives = mod_files.SelectMany(mod => mod.files.Select(file => (mod.Game, mod.ModId, File:file)).Where(f => !string.IsNullOrEmpty(f.File.category_name) )) @@ -53,7 +53,7 @@ namespace Wabbajack.BuildServer.Models.Jobs { var state = new NexusDownloader.State { - GameName = tuple.Game, ModID = tuple.ModId.ToString(), FileID = tuple.File.file_id.ToString() + Game = tuple.Game, ModID = tuple.ModId.ToString(), FileID = tuple.File.file_id.ToString() }; return new Archive {State = state, Name = tuple.File.file_name}; }).ToList(); diff --git a/Wabbajack.BuildServer/Models/Jobs/UpdateModLists.cs b/Wabbajack.BuildServer/Models/Jobs/UpdateModLists.cs index c1879b19..9f978b60 100644 --- a/Wabbajack.BuildServer/Models/Jobs/UpdateModLists.cs +++ b/Wabbajack.BuildServer/Models/Jobs/UpdateModLists.cs @@ -173,7 +173,7 @@ namespace Wabbajack.BuildServer.Models.Jobs { try { - var gameMeta = GameRegistry.GetByFuzzyName(state.GameName); + var gameMeta = state.Game.MetaData(); if (gameMeta == null) return false; diff --git a/Wabbajack.Lib/Downloaders/NexusDownloader.cs b/Wabbajack.Lib/Downloaders/NexusDownloader.cs index 45a7d8aa..20a3ff2b 100644 --- a/Wabbajack.Lib/Downloaders/NexusDownloader.cs +++ b/Wabbajack.Lib/Downloaders/NexusDownloader.cs @@ -10,6 +10,7 @@ using Wabbajack.Common; using Wabbajack.Common.StatusFeed.Errors; using Wabbajack.Lib.NexusApi; using Wabbajack.Lib.Validation; +using Game = Wabbajack.Common.Game; namespace Wabbajack.Lib.Downloaders { @@ -77,7 +78,7 @@ namespace Wabbajack.Lib.Downloaders ImageURL = info.picture_url, IsNSFW = info.contains_adult_content, Description = NexusApiUtils.FixupSummary(info.summary), - GameName = general.gameName, + Game = GameRegistry.GetByFuzzyName((string)general.gameName).Game, ModID = general.modID, FileID = general.fileID }; @@ -124,7 +125,7 @@ namespace Wabbajack.Lib.Downloaders public class State : AbstractDownloadState, IMetaState { [IgnoreMember] - public Uri URL => new Uri($"http://nexusmods.com/{NexusApiUtils.ConvertGameName(GameName)}/mods/{ModID}"); + public Uri URL => new Uri($"http://nexusmods.com/{Game.MetaData().NexusName}/mods/{ModID}"); [Key(0)] public string Name { get; set; } @@ -145,7 +146,7 @@ namespace Wabbajack.Lib.Downloaders public string Description { get; set; } [Key(6)] - public string GameName { get; set; } + public Game Game { get; set; } [Key(7)] public string ModID { get; set; } @@ -158,7 +159,7 @@ namespace Wabbajack.Lib.Downloaders } [IgnoreMember] - public override object[] PrimaryKey { get => new object[]{GameName, ModID, FileID};} + public override object[] PrimaryKey { get => new object[]{Game, ModID, FileID};} public override bool IsWhitelisted(ServerWhitelist whitelist) { @@ -180,7 +181,7 @@ namespace Wabbajack.Lib.Downloaders return false; } - Utils.Log($"Downloading Nexus Archive - {a.Name} - {GameName} - {ModID} - {FileID}"); + Utils.Log($"Downloading Nexus Archive - {a.Name} - {Game} - {ModID} - {FileID}"); return await new HTTPDownloader.State { @@ -192,7 +193,7 @@ namespace Wabbajack.Lib.Downloaders { try { - var gameMeta = GameRegistry.GetByMO2ArchiveName(GameName) ?? GameRegistry.GetByNexusName(GameName); + var gameMeta = Game.MetaData(); if (gameMeta == null) return false; @@ -212,7 +213,7 @@ namespace Wabbajack.Lib.Downloaders } catch (Exception ex) { - Utils.Log($"{Name} - {GameName} - {ModID} - {FileID} - Error getting Nexus download URL - {ex}"); + Utils.Log($"{Name} - {Game} - {ModID} - {FileID} - Error getting Nexus download URL - {ex}"); return false; } @@ -225,12 +226,12 @@ namespace Wabbajack.Lib.Downloaders public override string GetManifestURL(Archive a) { - return $"http://nexusmods.com/{NexusApiUtils.ConvertGameName(GameName)}/mods/{ModID}"; + return $"http://nexusmods.com/{Game.MetaData().NexusName}/mods/{ModID}"; } public override string[] GetMetaIni() { - return new[] {"[General]", $"gameName={GameName}", $"modID={ModID}", $"fileID={FileID}"}; + return new[] {"[General]", $"gameName={Game.MetaData().MO2Name}", $"modID={ModID}", $"fileID={FileID}"}; } } } diff --git a/Wabbajack.Lib/NexusApi/NexusApi.cs b/Wabbajack.Lib/NexusApi/NexusApi.cs index b68cfa44..e80ae7d4 100644 --- a/Wabbajack.Lib/NexusApi/NexusApi.cs +++ b/Wabbajack.Lib/NexusApi/NexusApi.cs @@ -268,7 +268,7 @@ namespace Wabbajack.Lib.NexusApi { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; - var url = $"https://api.nexusmods.com/v1/games/{ConvertGameName(archive.GameName)}/mods/{archive.ModID}/files/{archive.FileID}/download_link.json"; + var url = $"https://api.nexusmods.com/v1/games/{archive.Game.MetaData().NexusName}/mods/{archive.ModID}/files/{archive.FileID}/download_link.json"; try { return (await Get>(url)).First().URI; @@ -292,13 +292,6 @@ namespace Wabbajack.Lib.NexusApi throw; } } - - public async Task GetFileInfo(NexusDownloader.State mod) - { - var url = $"https://api.nexusmods.com/v1/games/{ConvertGameName(mod.GameName)}/mods/{mod.ModID}/files/{mod.FileID}.json"; - return await GetCached(url); - } - public class GetModFilesResponse { public List files { get; set; } @@ -346,7 +339,7 @@ namespace Wabbajack.Lib.NexusApi public static Uri ManualDownloadUrl(NexusDownloader.State state) { - return new Uri($"https://www.nexusmods.com/{GameRegistry.GetByFuzzyName(state.GameName).NexusName}/mods/{state.ModID}?tab=files"); + return new Uri($"https://www.nexusmods.com/{state.Game.MetaData().NexusName}/mods/{state.ModID}?tab=files"); } } } diff --git a/Wabbajack.Test/ContentRightsManagementTests.cs b/Wabbajack.Test/ContentRightsManagementTests.cs index a7dc45bd..bb1b101c 100644 --- a/Wabbajack.Test/ContentRightsManagementTests.cs +++ b/Wabbajack.Test/ContentRightsManagementTests.cs @@ -52,7 +52,7 @@ namespace Wabbajack.Test { State = new NexusDownloader.State { - GameName = "Skyrim", + Game = Game.Skyrim, Author = "bill", ModID = "42", FileID = "33", diff --git a/Wabbajack.Test/DownloaderTests.cs b/Wabbajack.Test/DownloaderTests.cs index 07906595..405fb043 100644 --- a/Wabbajack.Test/DownloaderTests.cs +++ b/Wabbajack.Test/DownloaderTests.cs @@ -548,7 +548,7 @@ namespace Wabbajack.Test Hash = Hash.FromBase64("gCRVrvzDNH0="), State = new NexusDownloader.State { - GameName = Game.SkyrimSpecialEdition.MetaData().NexusName, + Game = Game.SkyrimSpecialEdition, ModID = "24808", FileID = "123501" } diff --git a/Wabbajack/View Models/UserInterventionHandlers.cs b/Wabbajack/View Models/UserInterventionHandlers.cs index b373f868..e07e6e4e 100644 --- a/Wabbajack/View Models/UserInterventionHandlers.cs +++ b/Wabbajack/View Models/UserInterventionHandlers.cs @@ -148,7 +148,7 @@ namespace Wabbajack private async Task HandleManualNexusDownload(WebBrowserVM vm, CancellationTokenSource cancel, ManuallyDownloadNexusFile manuallyDownloadNexusFile) { var state = manuallyDownloadNexusFile.State; - var game = GameRegistry.GetByFuzzyName(state.GameName); + var game = state.Game.MetaData(); var hrefs = new[] { $"/Core/Libs/Common/Widgets/DownloadPopUp?id={state.FileID}&game_id={game.NexusGameId}",