diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-09-02 19:19:13 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-09-02 19:19:13 -0400 |
commit | c94f3e7c63a2f1aec89c68417db348d4e684fb79 (patch) | |
tree | 6cf32c93b43e0852352b493070d7f4812e236a96 /src/SMAPI/Framework/ModLoading | |
parent | 093117d777a84e3f1e3aaa8a1337059fb805a7dd (diff) | |
download | SMAPI-c94f3e7c63a2f1aec89c68417db348d4e684fb79.tar.gz SMAPI-c94f3e7c63a2f1aec89c68417db348d4e684fb79.tar.bz2 SMAPI-c94f3e7c63a2f1aec89c68417db348d4e684fb79.zip |
only use valid update keys in update-check logic (#592)
Diffstat (limited to 'src/SMAPI/Framework/ModLoading')
-rw-r--r-- | src/SMAPI/Framework/ModLoading/ModMetadata.cs | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/SMAPI/Framework/ModLoading/ModMetadata.cs b/src/SMAPI/Framework/ModLoading/ModMetadata.cs index 585debb4..c02f0830 100644 --- a/src/SMAPI/Framework/ModLoading/ModMetadata.cs +++ b/src/SMAPI/Framework/ModLoading/ModMetadata.cs @@ -1,7 +1,9 @@ using System; +using System.Collections.Generic; using System.Linq; using StardewModdingAPI.Toolkit.Framework.Clients.WebApi; using StardewModdingAPI.Toolkit.Framework.ModData; +using StardewModdingAPI.Toolkit.Framework.UpdateData; namespace StardewModdingAPI.Framework.ModLoading { @@ -141,13 +143,22 @@ namespace StardewModdingAPI.Framework.ModLoading && !string.IsNullOrWhiteSpace(this.Manifest.UniqueID); } - /// <summary>Whether the mod has at least one update key set.</summary> - public bool HasUpdateKeys() + /// <summary>Get the defined update keys.</summary> + /// <param name="validOnly">Only return valid update keys.</param> + public IEnumerable<UpdateKey> GetUpdateKeys(bool validOnly = false) { - return - this.HasManifest() - && this.Manifest.UpdateKeys != null - && this.Manifest.UpdateKeys.Any(key => !string.IsNullOrWhiteSpace(key)); + foreach (string rawKey in this.Manifest?.UpdateKeys ?? new string[0]) + { + UpdateKey updateKey = UpdateKey.Parse(rawKey); + if (updateKey.LooksValid || !validOnly) + yield return updateKey; + } + } + + /// <summary>Whether the mod has at least one valid update key set.</summary> + public bool HasValidUpdateKeys() + { + return this.GetUpdateKeys(validOnly: true).Any(); } } } |