using System; namespace PKHeX.Core { public static class UpdateUtil { /// <summary> /// Gets the latest version of PKHeX according to the Github API /// </summary> /// <returns>A version representing the latest available version of PKHeX, or null if the latest version could not be determined</returns> public static Version? GetLatestPKHeXVersion() { const string apiEndpoint = "https://api.github.com/repos/kwsch/pkhex/releases/latest"; var responseJson = NetUtil.GetStringFromURL(apiEndpoint); if (responseJson is null) return null; // Parse it manually; no need to parse the entire json to object. const string tag = "tag_name"; var index = responseJson.IndexOf(tag, StringComparison.Ordinal); if (index == -1) return null; var first = responseJson.IndexOf('"', index + tag.Length + 1) + 1; if (first == 0) return null; var second = responseJson.IndexOf('"', first); if (second == -1) return null; var tagString = responseJson[first..second]; return !Version.TryParse(tagString, out var latestVersion) ? null : latestVersion; } } }