Пример #1
0
        public GameLocalDataResponse GetLocalManifest(string id, string packageName = null, bool useDataCache = false)
        {
            var package = packageName;

            if (string.IsNullOrEmpty(package))
            {
                package = id.Replace(":", "");
            }

            var cacheFile = Path.Combine(OriginPaths.CachePath, Path.GetFileNameWithoutExtension(package) + ".json");

            if (useDataCache == true && File.Exists(cacheFile))
            {
                return(JsonConvert.DeserializeObject <GameLocalDataResponse>(File.ReadAllText(cacheFile, Encoding.UTF8)));
            }
            else if (useDataCache == true && !File.Exists(cacheFile))
            {
                FileSystem.CreateFolder(OriginPaths.CachePath);
                var data = WebApiClient.GetGameLocalData(id);
                File.WriteAllText(cacheFile, JsonConvert.SerializeObject(data), Encoding.UTF8);
                return(data);
            }
            else
            {
                return(WebApiClient.GetGameLocalData(id));
            }
        }
Пример #2
0
        public GameLocalDataResponse GetLocalManifest(string id, string packageName = null, bool useDataCache = false)
        {
            var package = packageName;

            if (string.IsNullOrEmpty(package))
            {
                package = id.Replace(":", "");
            }

            var cacheFile = Path.Combine(OriginPaths.CachePath, Path.GetFileNameWithoutExtension(package) + ".json");

            if (useDataCache == true && File.Exists(cacheFile))
            {
                return(JsonConvert.DeserializeObject <GameLocalDataResponse>(File.ReadAllText(cacheFile, Encoding.UTF8)));
            }
            else if (useDataCache == true && !File.Exists(cacheFile))
            {
                logger.Debug($"Downloading game manifest {id}");
                FileSystem.CreateDirectory(OriginPaths.CachePath);

                try
                {
                    var data = WebApiClient.GetGameLocalData(id);
                    File.WriteAllText(cacheFile, JsonConvert.SerializeObject(data), Encoding.UTF8);
                    return(data);
                }
                catch (WebException exc) when((exc.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound)
                {
                    logger.Info($"Origin manifest {id} not found on EA server, generating fake manifest.");
                    var data = new GameLocalDataResponse()
                    {
                        offerId   = id,
                        offerType = "Doesn't exists"
                    };

                    File.WriteAllText(cacheFile, JsonConvert.SerializeObject(data), Encoding.UTF8);
                    return(data);
                }
            }
            else
            {
                return(WebApiClient.GetGameLocalData(id));
            }
        }