using Newtonsoft.Json; using System.Net; using System.Net.Http.Headers; namespace Autoupdater { public static class GithubIntegration { private static HttpClient client { get { HttpClient _client = new HttpClient(); _client.DefaultRequestHeaders.Add("User-Agent", "request"); //_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("token", "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"); return _client; } } public static async Task Get(string Url) { return (await client.GetAsync(Url)). Content.ReadAsStringAsync().Result; } public static async Task<(string, string)> GetLatestVersion() { var ReleasesUrl = $"https://api.github.com/repos/edgarcantuco/BOTW.Release/releases"; var Releases = JsonConvert.DeserializeObject>>(await Get(ReleasesUrl)); string LatestRelease = "0.0.0"; string AssetsUrl = ""; foreach(var release in Releases) { if (CompareVersion(LatestRelease, (string)release["tag_name"])) { LatestRelease = (string)release["tag_name"]; AssetsUrl = (string)release["assets_url"]; } } var Assets = JsonConvert.DeserializeObject>>(await Get(AssetsUrl)); return (LatestRelease, (string)Assets[0]["url"]); } public static bool CompareVersion(string oldVersion, string newVersion) { List OldVersionNumber = oldVersion.Split(".").ToList(); List NewVersionNumber = newVersion.Split(".").ToList(); for (int i = 0; i < 3; i++) { if (Int16.Parse(OldVersionNumber[i]) < Int16.Parse(NewVersionNumber[i])) return true; if (Int16.Parse(OldVersionNumber[i]) > Int16.Parse(NewVersionNumber[i])) return false; } return false; } public static async Task DownloadZip(string Url) { string fileName = Guid.NewGuid().ToString(); using (WebClient wc = new WebClient()) { wc.Headers.Add(HttpRequestHeader.UserAgent, "request"); //wc.Headers.Add(HttpRequestHeader.Authorization, "token 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"); wc.Headers.Add(HttpRequestHeader.Accept, "application/octet-stream"); wc.DownloadFile(new System.Uri(Url), $"{fileName}.zip"); } return fileName; } } }