diff --git a/Assets/RothenburgAR/Scripts/Updater/UpdaterBehaviour.cs b/Assets/RothenburgAR/Scripts/Updater/UpdaterBehaviour.cs index 653d8a0..f0ba328 100644 --- a/Assets/RothenburgAR/Scripts/Updater/UpdaterBehaviour.cs +++ b/Assets/RothenburgAR/Scripts/Updater/UpdaterBehaviour.cs @@ -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(httpHandler.download.text); + //VersionAnswer = JsonConvert.DeserializeObject(http.download.text); VersionAnswer = JsonConvert.DeserializeObject(@"{""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>(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