From 84c406ce36254d639e15cadf901f414e3c13e3d1 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 30 Nov 2018 00:15:24 -0500 Subject: add ModDrop support in API & update checks (#604) --- src/SMAPI.Web/Controllers/ModsApiController.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/SMAPI.Web/Controllers') diff --git a/src/SMAPI.Web/Controllers/ModsApiController.cs b/src/SMAPI.Web/Controllers/ModsApiController.cs index f0835592..d1e81c3c 100644 --- a/src/SMAPI.Web/Controllers/ModsApiController.cs +++ b/src/SMAPI.Web/Controllers/ModsApiController.cs @@ -15,6 +15,7 @@ using StardewModdingAPI.Toolkit.Framework.ModData; using StardewModdingAPI.Toolkit.Framework.UpdateData; using StardewModdingAPI.Web.Framework.Clients.Chucklefish; using StardewModdingAPI.Web.Framework.Clients.GitHub; +using StardewModdingAPI.Web.Framework.Clients.ModDrop; using StardewModdingAPI.Web.Framework.Clients.Nexus; using StardewModdingAPI.Web.Framework.ConfigModels; using StardewModdingAPI.Web.Framework.ModRepositories; @@ -60,8 +61,9 @@ namespace StardewModdingAPI.Web.Controllers /// The config settings for mod update checks. /// The Chucklefish API client. /// The GitHub API client. + /// The ModDrop API client. /// The Nexus API client. - public ModsApiController(IHostingEnvironment environment, IMemoryCache cache, IOptions configProvider, IChucklefishClient chucklefish, IGitHubClient github, INexusClient nexus) + public ModsApiController(IHostingEnvironment environment, IMemoryCache cache, IOptions configProvider, IChucklefishClient chucklefish, IGitHubClient github, IModDropClient modDrop, INexusClient nexus) { this.ModDatabase = new ModToolkit().GetModDatabase(Path.Combine(environment.WebRootPath, "StardewModdingAPI.metadata.json")); ModUpdateCheckConfig config = configProvider.Value; @@ -76,6 +78,7 @@ namespace StardewModdingAPI.Web.Controllers { new ChucklefishRepository(chucklefish), new GitHubRepository(github), + new ModDropRepository(modDrop), new NexusRepository(nexus) } .ToDictionary(p => p.VendorKey); -- cgit From f0a5a3d154b0c362c455fc57ee2d29111748e0f8 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 2 Dec 2018 15:16:24 -0500 Subject: add ModDrop to mod compatibility page (#604) --- src/SMAPI.Web/Controllers/ModsApiController.cs | 2 ++ src/SMAPI.Web/ViewModels/ModModel.cs | 5 +++++ src/SMAPI.Web/wwwroot/Content/js/mods.js | 7 +++++++ .../Framework/Clients/WebApi/ModExtendedMetadataModel.cs | 4 ++++ src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiClient.cs | 2 ++ .../Framework/Clients/Wiki/WikiModEntry.cs | 3 +++ 6 files changed, 23 insertions(+) (limited to 'src/SMAPI.Web/Controllers') diff --git a/src/SMAPI.Web/Controllers/ModsApiController.cs b/src/SMAPI.Web/Controllers/ModsApiController.cs index d1e81c3c..12d349e0 100644 --- a/src/SMAPI.Web/Controllers/ModsApiController.cs +++ b/src/SMAPI.Web/Controllers/ModsApiController.cs @@ -294,6 +294,8 @@ namespace StardewModdingAPI.Web.Controllers yield return $"Nexus:{entry.NexusID}"; if (entry.ChucklefishID.HasValue) yield return $"Chucklefish:{entry.ChucklefishID}"; + if (entry.ModDropID.HasValue) + yield return $"ModDrop:{entry.ModDropID}"; } } diff --git a/src/SMAPI.Web/ViewModels/ModModel.cs b/src/SMAPI.Web/ViewModels/ModModel.cs index 0e7d2076..5c1840fc 100644 --- a/src/SMAPI.Web/ViewModels/ModModel.cs +++ b/src/SMAPI.Web/ViewModels/ModModel.cs @@ -96,6 +96,11 @@ namespace StardewModdingAPI.Web.ViewModels anyFound = true; yield return new ModLinkModel($"https://community.playstarbound.com/resources/{entry.ChucklefishID}", "Chucklefish"); } + if (entry.ModDropID.HasValue) + { + anyFound = true; + yield return new ModLinkModel($"https://www.moddrop.com/sdv/mod/467243/{entry.ModDropID}", "ModDrop"); + } // fallback if (!anyFound && !string.IsNullOrWhiteSpace(entry.CustomUrl)) diff --git a/src/SMAPI.Web/wwwroot/Content/js/mods.js b/src/SMAPI.Web/wwwroot/Content/js/mods.js index b4dc6986..f7a8501e 100644 --- a/src/SMAPI.Web/wwwroot/Content/js/mods.js +++ b/src/SMAPI.Web/wwwroot/Content/js/mods.js @@ -73,6 +73,11 @@ smapi.modList = function (mods) { id: "show-chucklefish", value: true }, + moddrop: { + label: "ModDrop", + id: "show-moddrop", + value: true + }, nexus: { label: "Nexus", id: "show-nexus", @@ -179,6 +184,8 @@ smapi.modList = function (mods) { if (!filters.download.chucklefish.value) ignoreSites.push("Chucklefish"); + if (!filters.download.moddrop.value) + ignoreSites.push("ModDrop"); if (!filters.download.nexus.value) ignoreSites.push("Nexus"); if (!filters.download.custom.value) diff --git a/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModExtendedMetadataModel.cs b/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModExtendedMetadataModel.cs index 247730d7..c9d9f916 100644 --- a/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModExtendedMetadataModel.cs +++ b/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModExtendedMetadataModel.cs @@ -28,6 +28,9 @@ namespace StardewModdingAPI.Toolkit.Framework.Clients.WebApi /// The mod ID in the Chucklefish mod repo. public int? ChucklefishID { get; set; } + /// The mod ID in the ModDrop mod repo. + public int? ModDropID { get; set; } + /// The GitHub repository in the form 'owner/repo'. public string GitHubRepo { get; set; } @@ -77,6 +80,7 @@ namespace StardewModdingAPI.Toolkit.Framework.Clients.WebApi this.Name = wiki.Name.FirstOrDefault(); this.NexusID = wiki.NexusID; this.ChucklefishID = wiki.ChucklefishID; + this.ModDropID = wiki.ModDropID; this.GitHubRepo = wiki.GitHubRepo; this.CustomSourceUrl = wiki.CustomSourceUrl; this.CustomUrl = wiki.CustomUrl; diff --git a/src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiClient.cs b/src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiClient.cs index a881e8b7..91078b08 100644 --- a/src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiClient.cs +++ b/src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiClient.cs @@ -93,6 +93,7 @@ namespace StardewModdingAPI.Toolkit.Framework.Clients.Wiki string[] warnings = this.GetAttributeAsCsv(node, "data-warnings"); int? nexusID = this.GetAttributeAsNullableInt(node, "data-nexus-id"); int? chucklefishID = this.GetAttributeAsNullableInt(node, "data-cf-id"); + int? modDropID = this.GetAttributeAsNullableInt(node, "data-moddrop-id"); string githubRepo = this.GetAttribute(node, "data-github"); string customSourceUrl = this.GetAttribute(node, "data-custom-source"); string customUrl = this.GetAttribute(node, "data-url"); @@ -133,6 +134,7 @@ namespace StardewModdingAPI.Toolkit.Framework.Clients.Wiki Author = authors, NexusID = nexusID, ChucklefishID = chucklefishID, + ModDropID = modDropID, GitHubRepo = githubRepo, CustomSourceUrl = customSourceUrl, CustomUrl = customUrl, diff --git a/src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiModEntry.cs b/src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiModEntry.cs index ce8d6c5f..f7b7839b 100644 --- a/src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiModEntry.cs +++ b/src/StardewModdingAPI.Toolkit/Framework/Clients/Wiki/WikiModEntry.cs @@ -21,6 +21,9 @@ namespace StardewModdingAPI.Toolkit.Framework.Clients.Wiki /// The mod ID in the Chucklefish mod repo. public int? ChucklefishID { get; set; } + /// The mod ID in the ModDrop mod repo. + public int? ModDropID { get; set; } + /// The GitHub repository in the form 'owner/repo'. public string GitHubRepo { get; set; } -- cgit