diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-08-14 12:07:15 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-08-14 12:07:15 -0400 |
commit | 3299d25ee3d112d14475361eae294f64b9859efa (patch) | |
tree | 3e5c349789c9165ff545530e819779d9133eced8 | |
parent | 36d20ce4ffca04cae05ef3b3fb286365ccec617d (diff) | |
download | SMAPI-3299d25ee3d112d14475361eae294f64b9859efa.tar.gz SMAPI-3299d25ee3d112d14475361eae294f64b9859efa.tar.bz2 SMAPI-3299d25ee3d112d14475361eae294f64b9859efa.zip |
drop backwards compatibility in update-check API
Update checks from older versions of SMAPI are never useful now that Stardew Valley 1.3 is released: older versions of SMAPI won't launch in Stardew Valley 1.3 (so they won't check for updates), and newer versions of SMAPI/mods won't work with older versions of the game.
4 files changed, 10 insertions, 84 deletions
diff --git a/docs/release-notes.md b/docs/release-notes.md index ab47b5c7..0ffcc591 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -23,6 +23,10 @@ * Fixed `.ToSButton()` methods not being public. * Updated compatibility list. +* For SMAPI developers: + * Dropped support for pre-SMAPI-2.6 update checks in the web API. + _These are no longer useful, even if the player still has earlier versions of SMAPI. Older versions of SMAPI won't launch in Stardew Valley 1.3 (so they won't check for updates), and newer versions of SMAPI/mods won't work with older versions of the game._ + ## 2.6 * For players: * Updated for Stardew Valley 1.3. diff --git a/src/SMAPI.Web/Controllers/ModsApiController.cs b/src/SMAPI.Web/Controllers/ModsApiController.cs index b500e19d..18d55665 100644 --- a/src/SMAPI.Web/Controllers/ModsApiController.cs +++ b/src/SMAPI.Web/Controllers/ModsApiController.cs @@ -83,31 +83,25 @@ namespace StardewModdingAPI.Web.Controllers /// <summary>Fetch version metadata for the given mods.</summary> /// <param name="model">The mod search criteria.</param> [HttpPost] - public async Task<object> PostAsync([FromBody] ModSearchModel model) + public async Task<IEnumerable<ModEntryModel>> PostAsync([FromBody] ModSearchModel model) { - // parse request data - ISemanticVersion apiVersion = this.GetApiVersion(); - ModSearchEntryModel[] searchMods = this.GetSearchMods(model, apiVersion).ToArray(); + if (model?.Mods == null) + return new ModEntryModel[0]; // fetch wiki data WikiCompatibilityEntry[] wikiData = await this.GetWikiDataAsync(); - - // fetch data IDictionary<string, ModEntryModel> mods = new Dictionary<string, ModEntryModel>(StringComparer.CurrentCultureIgnoreCase); - foreach (ModSearchEntryModel mod in searchMods) + foreach (ModSearchEntryModel mod in model.Mods) { if (string.IsNullOrWhiteSpace(mod.ID)) continue; ModEntryModel result = await this.GetModData(mod, wikiData, model.IncludeExtendedMetadata); - result.SetBackwardsCompatibility(apiVersion); mods[mod.ID] = result; } - // return in expected structure - return apiVersion.IsNewerThan("2.6-beta.18") - ? mods.Values - : (object)mods; + // return data + return mods.Values; } @@ -231,29 +225,6 @@ namespace StardewModdingAPI.Web.Controllers return current != null && (other == null || other.IsOlderThan(current)); } - /// <summary>Get the mods for which the API should return data.</summary> - /// <param name="model">The search model.</param> - /// <param name="apiVersion">The requested API version.</param> - private IEnumerable<ModSearchEntryModel> GetSearchMods(ModSearchModel model, ISemanticVersion apiVersion) - { - if (model == null) - yield break; - - // yield standard entries - if (model.Mods != null) - { - foreach (ModSearchEntryModel mod in model.Mods) - yield return mod; - } - - // yield mod update keys if backwards compatible - if (model.ModKeys != null && model.ModKeys.Any() && !apiVersion.IsNewerThan("2.6-beta.17")) - { - foreach (string updateKey in model.ModKeys.Distinct()) - yield return new ModSearchEntryModel(updateKey, new[] { updateKey }); - } - } - /// <summary>Get mod data from the wiki compatibility list.</summary> private async Task<WikiCompatibilityEntry[]> GetWikiDataAsync() { diff --git a/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModEntryModel.cs b/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModEntryModel.cs index f3f22b93..2aafe199 100644 --- a/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModEntryModel.cs +++ b/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModEntryModel.cs @@ -1,6 +1,3 @@ -using System; -using Newtonsoft.Json; - namespace StardewModdingAPI.Toolkit.Framework.Clients.WebApi { /// <summary>Metadata about a mod.</summary> @@ -26,46 +23,5 @@ namespace StardewModdingAPI.Toolkit.Framework.Clients.WebApi /// <summary>The errors that occurred while fetching update data.</summary> public string[] Errors { get; set; } = new string[0]; - - /**** - ** Backwards-compatible fields - ****/ - /// <summary>The mod's latest version number.</summary> - [Obsolete("Use " + nameof(ModEntryModel.Main))] - [JsonProperty] - internal string Version { get; private set; } - - /// <summary>The mod's web URL.</summary> - [Obsolete("Use " + nameof(ModEntryModel.Main))] - [JsonProperty] - internal string Url { get; private set; } - - /// <summary>The mod's latest optional release, if newer than <see cref="Version"/>.</summary> - [Obsolete("Use " + nameof(ModEntryModel.Optional))] - [JsonProperty] - internal string PreviewVersion { get; private set; } - - /// <summary>The web URL to the mod's latest optional release, if newer than <see cref="Version"/>.</summary> - [Obsolete("Use " + nameof(ModEntryModel.Optional))] - [JsonProperty] - internal string PreviewUrl { get; private set; } - - - /********* - ** Public methods - *********/ - /// <summary>Set backwards-compatible fields.</summary> - /// <param name="version">The requested API version.</param> - public void SetBackwardsCompatibility(ISemanticVersion version) - { - if (version.IsOlderThan("2.6-beta.19")) - { - this.Version = this.Main?.Version?.ToString(); - this.Url = this.Main?.Url; - - this.PreviewVersion = this.Optional?.Version?.ToString(); - this.PreviewUrl = this.Optional?.Url; - } - } } } diff --git a/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModSeachModel.cs b/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModSeachModel.cs index df0d8457..e352e1cc 100644 --- a/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModSeachModel.cs +++ b/src/StardewModdingAPI.Toolkit/Framework/Clients/WebApi/ModSeachModel.cs @@ -1,4 +1,3 @@ -using System; using System.Linq; namespace StardewModdingAPI.Toolkit.Framework.Clients.WebApi @@ -9,10 +8,6 @@ namespace StardewModdingAPI.Toolkit.Framework.Clients.WebApi /********* ** Accessors *********/ - /// <summary>The namespaced mod keys to search.</summary> - [Obsolete] - public string[] ModKeys { get; set; } - /// <summary>The mods for which to find data.</summary> public ModSearchEntryModel[] Mods { get; set; } |