summaryrefslogtreecommitdiff
path: root/builtin/mainmenu
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-12-11 04:43:14 +0000
committerParamat <paramat@users.noreply.github.com>2018-12-11 04:43:14 +0000
commitf318366c20e6c134d600c0f8fa212186035ea8e3 (patch)
tree2e89bb75271cc80903e9664608c979f616eecab6 /builtin/mainmenu
parenta833bee9edaeb6df69d1e510759a7b33915a41e0 (diff)
downloadminetest-f318366c20e6c134d600c0f8fa212186035ea8e3.tar.gz
minetest-f318366c20e6c134d600c0f8fa212186035ea8e3.tar.bz2
minetest-f318366c20e6c134d600c0f8fa212186035ea8e3.zip
Fix ContentDB packages timing out by using download_file instead (#7891)
Diffstat (limited to 'builtin/mainmenu')
-rw-r--r--builtin/mainmenu/dlg_contentstore.lua34
1 files changed, 31 insertions, 3 deletions
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()