Ejemplo n.º 1
0
 public VanillaVersionCache(DateTime cacheCreation, Manifest.VersionType versionType,
                            List <ServerVersion> versions)
 {
     CacheCreation = cacheCreation;
     VersionType   = versionType;
     Versions      = versions;
 }
Ejemplo n.º 2
0
        private List <ServerVersion> GetVanillaVersionsFromCache(Manifest.VersionType versionType)
        {
            if (vanillaDict.ContainsKey(versionType) && VanillaCacheUpToDate(versionType))
            {
                return(vanillaDict[versionType]);
            }
            string path = Path.Combine(App.ApplicationPath, "persistence", "vanilla-" + versionType + ".json");

            if (File.Exists(path))
            {
                try
                {
                    string json = File.ReadAllText(path, Encoding.UTF8);
                    VanillaVersionCache versionCache = JsonSerializer.Deserialize <VanillaVersionCache>(json);
                    if (DateTime.Now.Subtract(versionCache.CacheCreation).TotalHours < 12)
                    {
                        return(versionCache.Versions);
                    }
                    //TODO update visual list after updating
                    UpdateVanillaVersionsAsync(versionType);
                    return(versionCache.Versions);
                }
                catch (Exception e)
                {
                    ErrorLogger.Append(e);
                    Console.WriteLine("Error while reading Vanilla version cache. Skipping...");
                }
            }
            UpdateVanillaVersions(versionType);
            return(GetVanillaVersionsFromCache(versionType));
        }
Ejemplo n.º 3
0
        private void CacheVanillaVersions(Manifest.VersionType versionType, List <ServerVersion> versions)
        {
            DateTime cacheAge = DateTime.Now;

            //RAM cache
            vanillaDict[versionType]     = versions;
            vanillaCacheAge[versionType] = cacheAge;
            VanillaVersionCache versionCache = new VanillaVersionCache(cacheAge, versionType, versions);

            //File cache
            string json = JsonSerializer.Serialize(versionCache);

            try
            {
                string path = Path.Combine(App.ApplicationPath, "persistence");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                path = Path.Combine(path, "vanilla-" + versionType + ".json");
                File.WriteAllText(path, json, Encoding.UTF8);
            }
            catch (Exception e)
            {
                ErrorLogger.Append(e);
                Console.WriteLine("Error while saving Vanilla version cache. Skipping...");
            }
        }
Ejemplo n.º 4
0
 private void UpdateVanillaVersionsAsync(Manifest.VersionType versionType)
 {
     new Thread(() =>
     {
         UpdateVanillaVersions(versionType);
     }).Start();
 }
Ejemplo n.º 5
0
 private void UpdateVanillaVersionsAsync(Manifest.VersionType versionType)
 {
     new Thread(() =>
     {
         UpdateVanillaVersions(versionType);
     })
     {
         IsBackground = true
     }.Start();
 }
Ejemplo n.º 6
0
        private bool VanillaCacheUpToDate(Manifest.VersionType versionType)
        {
            if (vanillaCacheAge.ContainsKey(versionType))
            {
                DateTime age        = vanillaCacheAge[versionType];
                DateTime now        = DateTime.Now;
                TimeSpan difference = now - age;
                if (difference.TotalHours < 12)
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 7
0
        private void UpdateVanillaVersions(Manifest.VersionType versionType)
        {
            Uri            uri     = new Uri("https://launchermeta.mojang.com/mc/game/version_manifest.json");
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            string         json;

            try
            {
                using (var response = request.GetResponse())
                    using (Stream stream = response.GetResponseStream())
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            json = reader.ReadToEnd();
                        }
            } catch (WebException e)
            {
                ErrorLogger.Append(e);
                Console.WriteLine("WebException while updating Vanilla Versions (Either mojang.com is down or your internet coeenction is not working)");
                return;
            }


            Manifest             manifest = JsonConvert.DeserializeObject <Manifest>(json);
            List <ServerVersion> result   = new List <ServerVersion>();

            foreach (Manifest.Version version in manifest.versions)
            {
                if (version.type == versionType)
                {
                    ServerVersion internalVersion = new ServerVersion();
                    internalVersion.Type    = ServerVersion.VersionType.Vanilla;
                    internalVersion.Version = version.id;
                    internalVersion.JarLink = GetJarURL(version.url);
                    if (internalVersion.JarLink != null)
                    {
                        result.Add(internalVersion);
                    }
                }
            }
            CacheVanillaVersions(versionType, result);
        }
Ejemplo n.º 8
0
        public List <ServerVersion> GetVanillaVersions(Manifest.VersionType type)
        {
            return(GetVanillaVersionsFromCache(type));

            /*List<ServerVersion> cachedVersions = GetVanillaVersionsFromCache(type);
             * if (cachedVersions!=null)
             * {
             *  return cachedVersions;
             * }
             *
             * Uri uri = new Uri("https://launchermeta.mojang.com/mc/game/version_manifest.json");
             * HttpWebRequest request = (HttpWebRequest) WebRequest.Create(uri);
             * string json;
             * using (var response =  request.GetResponse())
             * using (Stream stream = response.GetResponseStream())
             * using (StreamReader reader = new StreamReader(stream))
             * {
             *  json = reader.ReadToEnd();
             * }
             *
             * Manifest manifest = JsonConvert.DeserializeObject<Manifest>(json);
             * List<ServerVersion> result = new List<ServerVersion>();
             * foreach (Manifest.Version version in manifest.versions)
             * {
             *  if (version.type == type)
             *  {
             *      ServerVersion internalVersion = new ServerVersion();
             *      internalVersion.Type = ServerVersion.VersionType.Vanilla;
             *      internalVersion.Version = version.id;
             *      internalVersion.JarLink = GetJarURL(version.url);
             *      if (internalVersion.JarLink!=null)
             *      {
             *          result.Add(internalVersion);
             *      }
             *  }
             * }
             * vanillaDict[type] = result;
             * vanillaCacheAge[type] = DateTime.Now;
             * return result;*/
        }
Ejemplo n.º 9
0
 public List <ServerVersion> GetVanillaVersions(Manifest.VersionType type)
 {
     return(GetVanillaVersionsFromCache(type));
 }