using System; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using AyaNova.Util; using System.Net.Http; using Newtonsoft.Json.Linq; namespace AyaNova.Biz { /// /// called by Generator to check new releases automatically /// /// internal static class CoreJobVersionCheck { private static ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("CoreJobVersionCheck"); private static DateTime _lastCheck = DateTime.MinValue; private static TimeSpan CHECK_INTERVAL = new TimeSpan(24, 0, 0);//every day //////////////////////////////////////////////////////////////////////////////////////////////// // DoWork // public static async Task DoWorkAsync() { if (DateTime.UtcNow - _lastCheck < CHECK_INTERVAL) return; log.LogDebug("Check starting"); try { var client = ServiceProviderProvider.HttpClientFactory.CreateClient(); var res = await client.GetAsync("https://ayanova.com/download/latest-version.json"); string responseText = string.Empty; if (res.IsSuccessStatusCode) { responseText = await res.Content.ReadAsStringAsync(); var responseJson = JObject.Parse(responseText); //validate contains version string and that it appears to be valid if (responseJson.ContainsKey("latestversion")) { var v = responseJson["latestversion"].Value(); if (v.Contains(".")) { ServerGlobalOpsSettingsCache.LATEST_VERSION = v; } else { log.LogDebug($"version json response latestversion missing or malformed, response was: {responseText}"); } } else { log.LogDebug($"version json response latestversion missing or malformed, response was: {responseText}"); } if (responseJson.ContainsKey("changelogurl")) { var u = responseJson["changelogurl"].Value(); if (u.Contains("http")) { ServerGlobalOpsSettingsCache.CHANGE_LOG_URL = u; } else { log.LogDebug($"version json response changelogurl missing or malformed, response was: {responseText}"); } } else { log.LogDebug($"version json response changelogurl missing or malformed, response was: {responseText}"); } } else { log.LogWarning($"Error checking AyaNova website for updated release version: {res.ReasonPhrase},{responseText}"); } } catch (Exception ex) { log.LogError(ex, "Error checking AyaNova website for updated version"); } finally { _lastCheck = DateTime.UtcNow; } } ///////////////////////////////////////////////////////////////////// }//eoc }//eons