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)); } }
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)); } }