From f318366c20e6c134d600c0f8fa212186035ea8e3 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 11 Dec 2018 04:43:14 +0000 Subject: Fix ContentDB packages timing out by using download_file instead (#7891) --- builtin/mainmenu/dlg_contentstore.lua | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 'builtin/mainmenu') diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index 9abc76f3b..48856f228 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -268,9 +268,37 @@ function package_dialog.create(package) end function store.load() - store.packages_full = core.get_package_list() - store.packages = store.packages_full - store.loaded = true + local tmpdir = os.tempfolder() + local target = tmpdir .. DIR_DELIM .. "packages.json" + + assert(core.create_dir(tmpdir)) + + local base_url = core.settings:get("contentdb_url") + local show_nonfree = core.settings:get_bool("show_nonfree_packages") + local url = base_url .. + "/api/packages/?type=mod&type=game&type=txp&protocol_version=" .. + core.get_max_supp_proto() .. + "&nonfree=" .. + (show_nonfree and "true" or "false") + + core.download_file(url, target) + + local file = io.open(target, "r") + if file then + store.packages_full = core.parse_json(file:read("*all")) + file:close() + + for _, package in pairs(store.packages_full) do + package.url = base_url .. "/packages/" .. + package.author .. "/" .. package.name .. + "/releases/" .. package.release .. "/download/" + end + + store.packages = store.packages_full + store.loaded = true + end + + core.delete_dir(tmpdir) end function store.update_paths() -- cgit v1.2.3