From 9ba06704077c32f84aa4c4aeff8b75e66e1c0486 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 16 Apr 2022 11:21:44 -0400 Subject: fix Nexus API key needed to launch web project locally --- docs/release-notes.md | 3 +++ .../Framework/Clients/Nexus/DisabledNexusClient.cs | 31 ++++++++++++++++++++++ src/SMAPI.Web/Startup.cs | 23 ++++++++++------ 3 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 src/SMAPI.Web/Framework/Clients/Nexus/DisabledNexusClient.cs diff --git a/docs/release-notes.md b/docs/release-notes.md index 01ba6e30..de30a23b 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -64,6 +64,9 @@ the C# mod that loads them is updated. * Fixed issue where suppressing `[Left|Right]Thumbstick[Down|Left]` keys would suppress the opposite direction instead. * Fixed null handling in various edge cases. +### For SMAPI contributors +* You no longer need a Nexus API key to launch the SMAPI web project locally. + ## 3.13.4 Released 16 January 2022 for Stardew Valley 1.5.6 or later. diff --git a/src/SMAPI.Web/Framework/Clients/Nexus/DisabledNexusClient.cs b/src/SMAPI.Web/Framework/Clients/Nexus/DisabledNexusClient.cs new file mode 100644 index 00000000..6edd5f64 --- /dev/null +++ b/src/SMAPI.Web/Framework/Clients/Nexus/DisabledNexusClient.cs @@ -0,0 +1,31 @@ +using System.Threading.Tasks; +using StardewModdingAPI.Toolkit.Framework.UpdateData; + +namespace StardewModdingAPI.Web.Framework.Clients.Nexus +{ + /// A client for the Nexus website which does nothing, used for local development. + internal class DisabledNexusClient : INexusClient + { + /********* + ** Accessors + *********/ + /// + public ModSiteKey SiteKey => ModSiteKey.Nexus; + + + /********* + ** Public methods + *********/ + /// Get update check info about a mod. + /// The mod ID. + public Task GetModData(string id) + { + return Task.FromResult( + new GenericModPage(ModSiteKey.Nexus, id).SetError(RemoteModStatus.TemporaryError, "The Nexus client is currently disabled due to the configuration.") + ); + } + + /// + public void Dispose() { } + } +} diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs index 98dbca5e..2693aa90 100644 --- a/src/SMAPI.Web/Startup.cs +++ b/src/SMAPI.Web/Startup.cs @@ -128,14 +128,21 @@ namespace StardewModdingAPI.Web modUrlFormat: api.ModDropModPageUrl )); - services.AddSingleton(new NexusClient( - webUserAgent: userAgent, - webBaseUrl: api.NexusBaseUrl, - webModUrlFormat: api.NexusModUrlFormat, - webModScrapeUrlFormat: api.NexusModScrapeUrlFormat, - apiAppVersion: version, - apiKey: api.NexusApiKey - )); + if (!string.IsNullOrWhiteSpace(api.NexusApiKey)) + { + services.AddSingleton(new NexusClient( + webUserAgent: userAgent, + webBaseUrl: api.NexusBaseUrl, + webModUrlFormat: api.NexusModUrlFormat, + webModScrapeUrlFormat: api.NexusModScrapeUrlFormat, + apiAppVersion: version, + apiKey: api.NexusApiKey + )); + } + else + { + services.AddSingleton(new DisabledNexusClient()); + } services.AddSingleton(new PastebinClient( baseUrl: api.PastebinBaseUrl, -- cgit