public JsonVersionInfo GetLocalVersion() { DebugHandler.TraceMessage("GetLocalVersion Called.", DebugSource.TASK, DebugType.ENTRY_EXIT); JsonVersionInfo info = new JsonVersionInfo(); try { string contents = ""; #if __ANDROID__ var stream = Android.App.Application.Context.Assets.Open("version.json"); StreamReader sr = new StreamReader(stream); contents = sr.ReadToEnd(); sr.Close(); #else string versionPath = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "version.json"); contents = File.ReadAllText(versionPath); #endif JObject currentVersionJson = JObject.Parse(contents); info.currentbuild = currentVersionJson.Value <string>("build"); info.currentversion = currentVersionJson.Value <string>("version"); } catch (Exception e) { DebugHandler.TraceMessage(e.ToString(), DebugSource.TASK, DebugType.WARNING); } return(info); }
public async Task CheckVersion() { DebugHandler.TraceMessage("CheckVersion called", DebugSource.TASK, DebugType.ENTRY_EXIT); JsonVersionInfo versionInfoDevelop = new JsonVersionInfo(); JsonVersionInfo versionInfoRelease = new JsonVersionInfo(); versionInfoDevelop = await VersionHandler.GetLatestVersionDesktop(false); versionInfoRelease = await VersionHandler.GetLatestVersionDesktop(true); #if __ANDROID__ versionInfoDevelop = await VersionHandler.GetLatestVersionAndroid(false); versionInfoRelease = await VersionHandler.GetLatestVersionAndroid(true); #endif JsonVersionInfo currentVersion = VersionHandler.GetLocalVersion(); try { if (versionInfoDevelop.newversion != "Not Found" && currentVersion.currentversion != "Not Found") { DebugHandler.TraceMessage("Current: " + currentVersion.ToJson(), DebugSource.TASK, DebugType.INFO); DebugHandler.TraceMessage("Develop: " + versionInfoDevelop.ToJson(), DebugSource.TASK, DebugType.INFO); int currentBuild = int.Parse(currentVersion.currentbuild); int newBuild = int.Parse(versionInfoDevelop.newbuild); if (versionInfoDevelop.newversion == currentVersion.currentversion && currentBuild >= newBuild) { versionInfoDevelop.update_available = false; } else { versionInfoDevelop.update_available = true; } } if (versionInfoRelease.newversion != "Not Found" && currentVersion.currentversion != "Not Found") { DebugHandler.TraceMessage("Current: " + currentVersion.ToJson(), DebugSource.TASK, DebugType.INFO); DebugHandler.TraceMessage("Develop: " + versionInfoRelease.ToJson(), DebugSource.TASK, DebugType.INFO); int currentBuild = int.Parse(currentVersion.currentbuild); int newBuild = int.Parse(versionInfoRelease.newbuild); if (versionInfoRelease.newversion == currentVersion.currentversion && currentBuild >= newBuild) { versionInfoRelease.update_available = false; } else { versionInfoRelease.update_available = true; } } versionInfoDevelop.currentbuild = currentVersion.currentbuild; versionInfoDevelop.currentversion = currentVersion.currentversion; await WebSocketHandler.SendMessage(versionInfoDevelop.ToJson()); versionInfoRelease.currentbuild = currentVersion.currentbuild; versionInfoRelease.currentversion = currentVersion.currentversion; await WebSocketHandler.SendMessage(versionInfoRelease.ToJson()); } catch (Exception e) { DebugHandler.TraceMessage(e.ToString(), DebugSource.TASK, DebugType.WARNING); } }
public async Task <JsonVersionInfo> GetLatestVersionDesktop(bool release) { DebugHandler.TraceMessage("GetLatestVersionDesktop Called.", DebugSource.TASK, DebugType.ENTRY_EXIT); DebugHandler.TraceMessage("Is release mode: " + release.ToString(), DebugSource.TASK, DebugType.PARAMETERS); JsonVersionInfo versionInfo = new JsonVersionInfo(); try { HttpClient client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://api.github.com/repos/littleweeb/Desktop/releases?access_token=018003ade567151524c10210f0bd97b05b6ec96b"); request.Headers.Add("Accept", "application/vnd.github.v3+json"); request.Headers.Add("User-Agent", "LittleWeeb"); var response = await client.SendAsync(request); if (response.IsSuccessStatusCode) { DebugHandler.TraceMessage("Succesfully retreived releases!", DebugSource.TASK, DebugType.INFO); string json = await response.Content.ReadAsStringAsync(); DebugHandler.TraceMessage("Releases: " + json, DebugSource.TASK, DebugType.INFO); JArray jsonResult = JArray.Parse(json); foreach (JObject latestRelease in jsonResult.Children <JObject>()) { string mode = "develop"; if (release) { mode = "master"; } if (latestRelease.Value <string>("target_commitish") == mode) { string latestTag = latestRelease.Value <string>("tag_name"); string tagShouldContain = "win"; if (UtilityMethods.CheckOperatingSystems() == UtilityMethods.OperatingSystems.Linux) { tagShouldContain = "linux"; } else if (UtilityMethods.CheckOperatingSystems() == UtilityMethods.OperatingSystems.OsX) { tagShouldContain = "mac"; } if (latestTag.Contains(tagShouldContain)) { string latestVersion = latestTag.Split('_')[0]; string releaseUrl = latestRelease.Value <string>("html_url"); string date = latestRelease.Value <string>("published_at"); JArray assets = latestRelease.Value <JArray>("assets"); JObject latestAsset = assets.Last.ToObject <JObject>(); string latestDownload = latestAsset.Value <string>("browser_download_url"); string latestFileName = latestAsset.Value <string>("name"); versionInfo.newbuild = latestFileName.Split('.')[latestFileName.Split('.').Length - 2]; versionInfo.newversion = latestVersion; versionInfo.release_url = releaseUrl; versionInfo.direct_download_url = latestDownload; versionInfo.file_name = latestFileName; versionInfo.date = date; versionInfo.release_version = mode; return(versionInfo); } } } DebugHandler.TraceMessage("No matching releases found!", DebugSource.TASK, DebugType.INFO); return(versionInfo); } else { DebugHandler.TraceMessage("Failed retreiving releases!", DebugSource.TASK, DebugType.WARNING); return(versionInfo); } } catch (Exception e) { DebugHandler.TraceMessage(e.ToString(), DebugSource.TASK, DebugType.WARNING); return(versionInfo); } }