implemented version map generation for /versioncheck

This commit is contained in:
2018-08-24 16:16:38 +02:00
parent 1642cd37ac
commit fe5f4e6138

View File

@@ -39,12 +39,10 @@ namespace RothenburgAR.Updater
{
// check for updates and ask for permission to download if there are any
//TODO generate versionmap (i guess by crawling all subdirs of /exhibitions)
string versionMap = "[]";
string versionMap = GenerateVersionMap();
HttpHandler http = new HttpRequest(ApiInfo.VersionCheckEndpoint, HttpVerb.POST, versionMap).send();
httpHandlers.Add(http);
// httpHandler.operation.progress needs to be polled
http.operation.completed += ar =>
{
if (CheckNetworkErrors(http))
@@ -54,7 +52,7 @@ namespace RothenburgAR.Updater
Debug.Log(http.download.text);
//versionAnswer = JsonConvert.DeserializeObject<VersioncheckAnswer>(httpHandler.download.text);
//VersionAnswer = JsonConvert.DeserializeObject<VersioncheckAnswer>(http.download.text);
VersionAnswer = JsonConvert.DeserializeObject<VersioncheckAnswer>(@"{""languages"":[""de"",""en""],""data"":[{""id"":""006e164c-5e31-4ddf-adf5-df7016c8b3a8"",""meta"":{""status"":""ok"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""},""tracker"":{""status"":""ok"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""}},{""id"":""006e164c-5e31-4ddf-adf5-df7016c8b3a7"",""meta"":{""status"":""updated"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""},""tracker"":{""status"":""ok"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""}}]}");
if (VersionAnswer.data.TrueForAll(d => d.Meta.Status == VersionStatus.ok && d.Tracker.Status == VersionStatus.ok))
@@ -75,6 +73,32 @@ namespace RothenburgAR.Updater
};
}
private string GenerateVersionMap()
{
string result = "{";
var rootDir = new DirectoryInfo(PathHelper.ExhibitionPath);
var exhibitionDirs = rootDir.GetDirectories().ToList();
exhibitionDirs.ForEach(dir =>
{
var subdir = dir.GetDirectories().ToList().First();
if (subdir == null) return;
var metaFilePath = Path.Combine(subdir.FullName, "meta.json");
if (!File.Exists(metaFilePath)) return;
var exhibits = JsonConvert.DeserializeObject<List<Exhibit>>(File.ReadAllText(metaFilePath));
foreach (var exhibit in exhibits)
{
result += @"""{id}"":""{version}"",".Replace("{id}", exhibit.Id).Replace("{version}", exhibit.UpdatedTime.ToString());
}
});
result = result.Substring(0, result.Length - 1);
result += "}";
return result;
}
private void TriggerUpdate()
{
// TODO create centralized network error feedback hub thing