mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2025-12-16 01:02:34 +00:00
Fixed failing to download application manifests unless logged in by checking which source the application/channel orginated from, updated gems.
This commit is contained in:
@@ -8,7 +8,7 @@ GEM
|
|||||||
digest-crc (0.7.0)
|
digest-crc (0.7.0)
|
||||||
rake (>= 12.0.0, < 14.0.0)
|
rake (>= 12.0.0, < 14.0.0)
|
||||||
event_emitter (0.2.6)
|
event_emitter (0.2.6)
|
||||||
excon (1.2.7)
|
excon (1.3.0)
|
||||||
logger
|
logger
|
||||||
ffi (1.17.2-x64-mingw-ucrt)
|
ffi (1.17.2-x64-mingw-ucrt)
|
||||||
ffi (1.17.2-x86_64-linux-gnu)
|
ffi (1.17.2-x86_64-linux-gnu)
|
||||||
@@ -22,8 +22,8 @@ GEM
|
|||||||
logger (1.7.0)
|
logger (1.7.0)
|
||||||
mutex_m (0.3.0)
|
mutex_m (0.3.0)
|
||||||
rake (13.3.0)
|
rake (13.3.0)
|
||||||
rexml (3.4.1)
|
rexml (3.4.2)
|
||||||
rubyzip (2.4.1)
|
rubyzip (3.0.2)
|
||||||
sdl2-bindings (0.2.3)
|
sdl2-bindings (0.2.3)
|
||||||
ffi (~> 1.15)
|
ffi (~> 1.15)
|
||||||
websocket (1.2.11)
|
websocket (1.2.11)
|
||||||
@@ -58,4 +58,4 @@ DEPENDENCIES
|
|||||||
win32-security
|
win32-security
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.6.7
|
2.6.8
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ class W3DHub
|
|||||||
response = post("/apis/launcher/1/get-applications", DEFAULT_HEADERS, nil, backend)
|
response = post("/apis/launcher/1/get-applications", DEFAULT_HEADERS, nil, backend)
|
||||||
|
|
||||||
if response.status == 200
|
if response.status == 200
|
||||||
Applications.new(response.body)
|
Applications.new(response.body, backend)
|
||||||
else
|
else
|
||||||
logger.error(LOG_TAG) { "Failed to fetch applications list:" }
|
logger.error(LOG_TAG) { "Failed to fetch applications list:" }
|
||||||
logger.error(LOG_TAG) { response }
|
logger.error(LOG_TAG) { response }
|
||||||
@@ -294,7 +294,7 @@ class W3DHub
|
|||||||
next
|
next
|
||||||
end
|
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
|
if channel.user_level != _channel.user_level
|
||||||
# Replace alternate's channel with primary's channel
|
# Replace alternate's channel with primary's channel
|
||||||
_game.channels[_game.channels.index(_channel)] = channel
|
_game.channels[_game.channels.index(_channel)] = channel
|
||||||
@@ -303,7 +303,7 @@ class W3DHub
|
|||||||
next
|
next
|
||||||
end
|
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)
|
if Gem::Version.new(channel.current_version) > Gem::Version.new(_channel.current_version)
|
||||||
# Replace alternate's channel with primary's channel
|
# Replace alternate's channel with primary's channel
|
||||||
_game.channels[_game.channels.index(_channel)] = channel
|
_game.channels[_game.channels.index(_channel)] = channel
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ class W3DHub
|
|||||||
class Applications
|
class Applications
|
||||||
attr_reader :data
|
attr_reader :data
|
||||||
|
|
||||||
def initialize(response)
|
def initialize(response, source = nil)
|
||||||
@data = JSON.parse(response, symbolize_names: true)
|
@data = JSON.parse(response, symbolize_names: true)
|
||||||
|
|
||||||
games = @data[:applications].select { |a| a[:category] == "games" }
|
games = @data[:applications].select { |a| a[:category] == "games" }
|
||||||
|
|
||||||
@games = []
|
@games = []
|
||||||
|
|
||||||
games.each { |hash| @games << Game.new(hash) }
|
games.each { |hash| @games << Game.new(hash, source) }
|
||||||
@games.sort_by!(&:name).reverse
|
@games.sort_by!(&:name).reverse
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -20,9 +20,11 @@ class W3DHub
|
|||||||
|
|
||||||
class Game
|
class Game
|
||||||
attr_reader :id, :name, :type, :category, :studio_id, :channels, :web_links, :color
|
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 = hash
|
||||||
|
@data[:___source] = source if source
|
||||||
|
|
||||||
@id = @data[:id].to_s
|
@id = @data[:id].to_s
|
||||||
@name = @data[:name]
|
@name = @data[:name]
|
||||||
@@ -31,7 +33,7 @@ class W3DHub
|
|||||||
@studio_id = @data[:"studio-id"]
|
@studio_id = @data[:"studio-id"]
|
||||||
|
|
||||||
# TODO: Do processing
|
# 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) } || []
|
@web_links = @data[:"web-links"]&.map { |link| WebLink.new(link) } || []
|
||||||
@extended_data = @data[:"extended-data"]
|
@extended_data = @data[:"extended-data"]
|
||||||
|
|
||||||
@@ -55,17 +57,34 @@ class W3DHub
|
|||||||
@uses_ren_folder
|
@uses_ren_folder
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def source
|
||||||
|
@data[:___source]&.to_sym || :w3dhub
|
||||||
|
end
|
||||||
|
|
||||||
|
def source=(sym)
|
||||||
|
@data[:___source] = sym
|
||||||
|
end
|
||||||
|
|
||||||
class Channel
|
class Channel
|
||||||
attr_reader :id, :name, :user_level, :current_version
|
attr_reader :id, :name, :user_level, :current_version
|
||||||
|
|
||||||
def initialize(hash)
|
def initialize(hash, source = nil)
|
||||||
@data = hash
|
@data = hash
|
||||||
|
@data[:___source] = source
|
||||||
|
|
||||||
@id = @data[:id].to_s
|
@id = @data[:id].to_s
|
||||||
@name = @data[:name]
|
@name = @data[:name]
|
||||||
@user_level = @data[:"user-level"]
|
@user_level = @data[:"user-level"]
|
||||||
@current_version = @data[:"current-version"]
|
@current_version = @data[:"current-version"]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def source
|
||||||
|
@data[:___source]&.to_sym || :w3dhub
|
||||||
|
end
|
||||||
|
|
||||||
|
def source=(sym)
|
||||||
|
@data[:___source] = sym
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class WebLink
|
class WebLink
|
||||||
|
|||||||
@@ -369,7 +369,7 @@ class W3DHub
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
package_details = Api.package_details(hashes)
|
package_details = Api.package_details(hashes, @channel.source || :w3dhub)
|
||||||
|
|
||||||
unless package_details
|
unless package_details
|
||||||
fail!("Failed to fetch package details")
|
fail!("Failed to fetch package details")
|
||||||
@@ -596,7 +596,7 @@ class W3DHub
|
|||||||
# Check for and integrity of local manifest
|
# Check for and integrity of local manifest
|
||||||
|
|
||||||
package = nil
|
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)
|
if array.is_a?(Array)
|
||||||
package = array.first
|
package = array.first
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user