100 lines
3.7 KiB
C#
100 lines
3.7 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.Extensions.Logging;
|
|
using AyaNova.Util;
|
|
|
|
using System.Net.Http;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace AyaNova.Biz
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
/// called by Generator to check new releases automatically
|
|
///
|
|
/// </summary>
|
|
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<string>();
|
|
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<string>();
|
|
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
|
|
|