implemented version map generation for /versioncheck
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user