From 47982948d69feb6dae6ca937d488fd34d1774ddf Mon Sep 17 00:00:00 2001 From: tkashkin Date: Fri, 21 Dec 2018 18:49:01 +0300 Subject: [PATCH] Fix Humble Trove url signing (#32) --- src/data/sources/humble/HumbleGame.vala | 5 +++-- src/data/sources/humble/Trove.vala | 12 ++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/data/sources/humble/HumbleGame.vala b/src/data/sources/humble/HumbleGame.vala index 1bf3b457..6b713551 100644 --- a/src/data/sources/humble/HumbleGame.vala +++ b/src/data/sources/humble/HumbleGame.vala @@ -298,7 +298,8 @@ namespace GameHub.Data.Sources.Humble var new_url = installer.update_url(this); if(new_url != null) { - info = info.replace(old_url, new_url); + var url_field = "\"web\": \"%s\""; + info = info.replace(url_field.printf(old_url), url_field.printf(new_url)); } refresh = true; } @@ -371,7 +372,7 @@ namespace GameHub.Data.Sources.Humble { id = machine_name; this.platform = platform; - this.dl_id = download_identifier; + dl_id = download_identifier; dl_name = download.has_member("name") ? download.get_string_member("name") : ""; var url_obj = download.has_member("url") ? download.get_object_member("url") : null; var url = url_obj != null && url_obj.has_member("web") ? url_obj.get_string_member("web") : ""; diff --git a/src/data/sources/humble/Trove.vala b/src/data/sources/humble/Trove.vala index 07ce42ad..460283cb 100644 --- a/src/data/sources/humble/Trove.vala +++ b/src/data/sources/humble/Trove.vala @@ -102,6 +102,18 @@ namespace GameHub.Data.Sources.Humble trove_root.foreach_member((trove_root_obj, key, node) => { if(key == TROVE_INTRO_ID) return; + var obj = node.get_object(); + var downloads = obj.get_object_member("downloads"); + + downloads.foreach_member((downloads_obj, dl_os, dl_node) => { + var dl_obj = dl_node.get_object(); + var dl_name = dl_obj.get_string_member("machine_name"); + var dl_id = dl_obj.get_object_member("url").get_string_member("web"); + dl_obj.set_string_member("download_identifier", dl_id); + var signed_url = sign_url(dl_name, dl_id, user_token); + dl_obj.get_object_member("url").set_string_member("web", signed_url ?? "humble-trove-unsigned://" + dl_name + "/_gh_dl_/" + dl_id); + }); + var game = new HumbleGame(this, Trove.FAKE_ORDER, node); if(game.platforms.size == 0) return;