예제 #1
0
        public static void CheckServersFile()
        {
            var path = Path.Combine(App.DataPath, "servers.txt");

            if (!DatabaseHashes.TryGetValue("servers.txt", out var serversHash))
            {
                return;
            }
            if (File.Exists(path) && HashUtils.GenerateFileHash(path) == serversHash)
            {
                return;
            }
            DownloadServersFile();
        }
예제 #2
0
 public static void CheckDatabaseHash()
 {
     DatabaseHashes.Clear();
     try
     {
         DownloadDatabaseHashes();
     }
     catch (Exception ex)
     {
         Log.F($"Failed to download database hashes. nException: {ex.Message}\n{ex.StackTrace}");
         if (App.SplashScreen.VM.AskUpdate("Failed to download database hashes. Try again?"))
         {
             CheckDatabaseHash();
         }
     }
 }
예제 #3
0
        private static void DownloadDatabaseHashes()
        {
            DatabaseHashes.Clear();
            using var c = MiscUtils.GetDefaultWebClient();
            var f = c.OpenRead(DatabaseHashFileUrl);

            if (f == null)
            {
                return;
            }
            using var sr = new StreamReader(f);
            var sHashes = sr.ReadToEnd();
            var jHashes = JObject.Parse(sHashes);

            jHashes.Descendants().ToList().ForEach(jDesc =>
            {
                if (!(jDesc is JProperty jProp))
                {
                    return;
                }
                DatabaseHashes[jProp.Name] = jProp.Value.ToString();
            });
        }