From aaffd43168bc8608bf5e9403c54e98a4bc3c6a1f Mon Sep 17 00:00:00 2001 From: pointfeev Date: Fri, 4 Mar 2022 18:57:11 -0500 Subject: [PATCH] v3.0.2.1 - Fixed an exception from temporarily unavailable Epic GraphQL --- CreamInstaller/CreamInstaller.csproj | 2 +- CreamInstaller/Epic/EpicStore.cs | 36 ++++++++++++++++------------ CreamInstaller/SelectForm.cs | 2 +- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/CreamInstaller/CreamInstaller.csproj b/CreamInstaller/CreamInstaller.csproj index 11ffc83..bd8773f 100644 --- a/CreamInstaller/CreamInstaller.csproj +++ b/CreamInstaller/CreamInstaller.csproj @@ -5,7 +5,7 @@ True Resources\ini.ico true - 3.0.2.0 + 3.0.2.1 Resources\ini.ico diff --git a/CreamInstaller/Epic/EpicStore.cs b/CreamInstaller/Epic/EpicStore.cs index b50a390..3466832 100644 --- a/CreamInstaller/Epic/EpicStore.cs +++ b/CreamInstaller/Epic/EpicStore.cs @@ -20,13 +20,12 @@ internal static class EpicStore { }*/ - internal static async Task> QueryEntitlements(Manifest manifest) + internal static async Task> QueryEntitlements(string categoryNamespace) { - string @namespace = manifest.CatalogNamespace; List<(string id, string name, string product, string icon, string developer)> dlcIds = new(); - Response response = await QueryGraphQL(@namespace); + Response response = await QueryGraphQL(categoryNamespace); if (response is null) return dlcIds; - try { File.WriteAllText(ProgramData.AppInfoPath + @$"\{@namespace}.json", JsonConvert.SerializeObject(response, Formatting.Indented)); } catch { } + try { File.WriteAllText(ProgramData.AppInfoPath + @$"\{categoryNamespace}.json", JsonConvert.SerializeObject(response, Formatting.Indented)); } catch { } List searchStore = new(response.Data.Catalog.SearchStore.Elements); foreach (Element element in searchStore) { @@ -89,16 +88,23 @@ internal static class EpicStore private static async Task QueryGraphQL(string categoryNamespace) { - string encoded = HttpUtility.UrlEncode(categoryNamespace); - Request request = new(encoded); - string payload = JsonConvert.SerializeObject(request); - HttpContent content = new StringContent(payload); - content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); - HttpClient client = HttpClientManager.HttpClient; - if (client is null) return null; - HttpResponseMessage httpResponse = await client.PostAsync("https://graphql.epicgames.com/graphql", content); - httpResponse.EnsureSuccessStatusCode(); - string response = await httpResponse.Content.ReadAsStringAsync(); - return JsonConvert.DeserializeObject(response); + try + { + string encoded = HttpUtility.UrlEncode(categoryNamespace); + Request request = new(encoded); + string payload = JsonConvert.SerializeObject(request); + HttpContent content = new StringContent(payload); + content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + HttpClient client = HttpClientManager.HttpClient; + if (client is null) return null; + HttpResponseMessage httpResponse = await client.PostAsync("https://graphql.epicgames.com/graphql", content); + httpResponse.EnsureSuccessStatusCode(); + string response = await httpResponse.Content.ReadAsStringAsync(); + return JsonConvert.DeserializeObject(response); + } + catch + { + return null; + } } } diff --git a/CreamInstaller/SelectForm.cs b/CreamInstaller/SelectForm.cs index 8864534..5685267 100644 --- a/CreamInstaller/SelectForm.cs +++ b/CreamInstaller/SelectForm.cs @@ -261,7 +261,7 @@ internal partial class SelectForm : CustomForm if (Program.Canceled) return; ConcurrentDictionary entitlements = new(); List dlcTasks = new(); - List<(string id, string name, string product, string icon, string developer)> entitlementIds = await EpicStore.QueryEntitlements(manifest); + List<(string id, string name, string product, string icon, string developer)> entitlementIds = await EpicStore.QueryEntitlements(@namespace); if (entitlementIds.Any()) { foreach ((string id, string name, string product, string icon, string developer) in entitlementIds)