From d880d1525fa57b11f9d2bc1cbf67a051e6b0f984 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Wed, 29 Dec 2021 08:37:54 -0600 Subject: [PATCH] Put a bandaid on Api.package_details by using Async::HTTP::Client instead of directly using Async::HTTP::Internet- TODO: use :Client instead of ::Internet, enabled verify_files task in installer --- lib/api.rb | 5 +++-- lib/application_manager/task.rb | 9 ++++++++- lib/application_manager/tasks/installer.rb | 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/api.rb b/lib/api.rb index 1a56337..ae78f64 100644 --- a/lib/api.rb +++ b/lib/api.rb @@ -128,13 +128,14 @@ class W3DHub # client requests package details: data={"packages":[{"category":"games","name":"apb.ico","subcategory":"apb","version":""}]} def self.package_details(internet, packages) body = URI.encode_www_form("data": JSON.dump({ packages: packages })) - response = internet.post("#{ENDPOINT}/apis/launcher/1/get-package-details", FORM_ENCODED_HEADERS, body) + endpoint = Async::HTTP::Endpoint.parse("#{ENDPOINT}/apis/launcher/1/get-package-details", protocol: Async::HTTP::Protocol::HTTP10) + client = Async::HTTP::Client.new(endpoint) + response = client.post("#{ENDPOINT}/apis/launcher/1/get-package-details", FORM_ENCODED_HEADERS, body) if response.success? hash = JSON.parse(response.read, symbolize_names: true) hash[:packages].map { |pkg| Package.new(pkg) } else - pp response, body false end end diff --git a/lib/application_manager/task.rb b/lib/application_manager/task.rb index 027559b..728664d 100644 --- a/lib/application_manager/task.rb +++ b/lib/application_manager/task.rb @@ -507,7 +507,14 @@ class W3DHub # Check for and integrity of local manifest internet = Async::HTTP::Internet.instance - package = Api.package_details(internet, [{ category: category, subcategory: subcategory, name: name, version: version }]).first + package = nil + array = Api.package_details(internet, [{ category: category, subcategory: subcategory, name: name, version: version }]) + if array.is_a?(Array) + package = array.first + else + fail!("Failed to fetch manifest package details!") + return + end if File.exist?(Cache.package_path(category, subcategory, name, version)) verified = verify_package(package) diff --git a/lib/application_manager/tasks/installer.rb b/lib/application_manager/tasks/installer.rb index a697217..db584a7 100644 --- a/lib/application_manager/tasks/installer.rb +++ b/lib/application_manager/tasks/installer.rb @@ -15,8 +15,8 @@ class W3DHub packages = build_package_list(manifests) return false if failed? - # verify_files(manifests, packages) - # return false if failed? + verify_files(manifests, packages) + return false if failed? fetch_packages(packages) return false if failed?