From 30aa44312d6f6c6cbcaf707c8c6e5347462f74ef Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Tue, 26 Aug 2025 08:51:08 -0500 Subject: [PATCH] Fixed failing to download application manifests unless logged in by checking which source the application/channel orginated from, updated gems. --- Gemfile.lock | 8 ++++---- lib/api.rb | 6 +++--- lib/api/applications.rb | 29 ++++++++++++++++++++++++----- lib/application_manager/task.rb | 4 ++-- 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 297936c..403a4bb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,7 +8,7 @@ GEM digest-crc (0.7.0) rake (>= 12.0.0, < 14.0.0) event_emitter (0.2.6) - excon (1.2.7) + excon (1.3.0) logger ffi (1.17.2-x64-mingw-ucrt) ffi (1.17.2-x86_64-linux-gnu) @@ -22,8 +22,8 @@ GEM logger (1.7.0) mutex_m (0.3.0) rake (13.3.0) - rexml (3.4.1) - rubyzip (2.4.1) + rexml (3.4.2) + rubyzip (3.0.2) sdl2-bindings (0.2.3) ffi (~> 1.15) websocket (1.2.11) @@ -58,4 +58,4 @@ DEPENDENCIES win32-security BUNDLED WITH - 2.6.7 + 2.6.8 diff --git a/lib/api.rb b/lib/api.rb index 628498c..320dea7 100644 --- a/lib/api.rb +++ b/lib/api.rb @@ -240,7 +240,7 @@ class W3DHub response = post("/apis/launcher/1/get-applications", DEFAULT_HEADERS, nil, backend) if response.status == 200 - Applications.new(response.body) + Applications.new(response.body, backend) else logger.error(LOG_TAG) { "Failed to fetch applications list:" } logger.error(LOG_TAG) { response } @@ -294,7 +294,7 @@ class W3DHub next end - # If the access levels doen't match then overwrite alternate's channel with primary's channel + # If the access levels don't match then overwrite alternate's channel with primary's channel if channel.user_level != _channel.user_level # Replace alternate's channel with primary's channel _game.channels[_game.channels.index(_channel)] = channel @@ -303,7 +303,7 @@ class W3DHub next end - # If versions doen't match then pick whichever one is higher + # If versions don't match then pick whichever one is higher if Gem::Version.new(channel.current_version) > Gem::Version.new(_channel.current_version) # Replace alternate's channel with primary's channel _game.channels[_game.channels.index(_channel)] = channel diff --git a/lib/api/applications.rb b/lib/api/applications.rb index f958b56..5153587 100644 --- a/lib/api/applications.rb +++ b/lib/api/applications.rb @@ -3,14 +3,14 @@ class W3DHub class Applications attr_reader :data - def initialize(response) + def initialize(response, source = nil) @data = JSON.parse(response, symbolize_names: true) games = @data[:applications].select { |a| a[:category] == "games" } @games = [] - games.each { |hash| @games << Game.new(hash) } + games.each { |hash| @games << Game.new(hash, source) } @games.sort_by!(&:name).reverse end @@ -20,9 +20,11 @@ class W3DHub class Game attr_reader :id, :name, :type, :category, :studio_id, :channels, :web_links, :color + attr_reader :___source - def initialize(hash) + def initialize(hash, source = nil) @data = hash + @data[:___source] = source if source @id = @data[:id].to_s @name = @data[:name] @@ -31,7 +33,7 @@ class W3DHub @studio_id = @data[:"studio-id"] # TODO: Do processing - @channels = @data[:channels].map { |channel| Channel.new(channel) } + @channels = @data[:channels].map { |channel| Channel.new(channel, source) } @web_links = @data[:"web-links"]&.map { |link| WebLink.new(link) } || [] @extended_data = @data[:"extended-data"] @@ -55,17 +57,34 @@ class W3DHub @uses_ren_folder end + def source + @data[:___source]&.to_sym || :w3dhub + end + + def source=(sym) + @data[:___source] = sym + end + class Channel attr_reader :id, :name, :user_level, :current_version - def initialize(hash) + def initialize(hash, source = nil) @data = hash + @data[:___source] = source @id = @data[:id].to_s @name = @data[:name] @user_level = @data[:"user-level"] @current_version = @data[:"current-version"] end + + def source + @data[:___source]&.to_sym || :w3dhub + end + + def source=(sym) + @data[:___source] = sym + end end class WebLink diff --git a/lib/application_manager/task.rb b/lib/application_manager/task.rb index fc3756a..fde6dca 100644 --- a/lib/application_manager/task.rb +++ b/lib/application_manager/task.rb @@ -369,7 +369,7 @@ class W3DHub } end - package_details = Api.package_details(hashes) + package_details = Api.package_details(hashes, @channel.source || :w3dhub) unless package_details fail!("Failed to fetch package details") @@ -596,7 +596,7 @@ class W3DHub # Check for and integrity of local manifest package = nil - array = Api.package_details([{ category: category, subcategory: subcategory, name: name, version: version }]) + array = Api.package_details([{ category: category, subcategory: subcategory, name: name, version: version }], @channel.source || :w3dhub) if array.is_a?(Array) package = array.first else