aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2021-03-10 09:38:27 +0100
committerElias Fleckenstein <eliasfleckenstein@web.de>2021-03-10 09:38:27 +0100
commitbc79c2344e226bdf833382b5ce51c47ddd536bf2 (patch)
tree8a6eec4b51929f89e216a1cbf88b4a19bec3e72d
parentd3780cefd10472a57425cf5e0ab4cf4b816401be (diff)
downloaddragonfireclient-bc79c2344e226bdf833382b5ce51c47ddd536bf2.tar.xz
CSM: Use server-like (and safe) HTTP API instead of Mainmenu-like
-rw-r--r--builtin/client/util.lua20
-rw-r--r--src/script/lua_api/l_http.cpp14
2 files changed, 32 insertions, 2 deletions
diff --git a/builtin/client/util.lua b/builtin/client/util.lua
index aea15e00f..440f99ebc 100644
--- a/builtin/client/util.lua
+++ b/builtin/client/util.lua
@@ -58,3 +58,23 @@ end
function core.get_nearby_objects(radius)
return core.get_objects_inside_radius(core.localplayer:get_pos(), radius)
end
+
+-- HTTP callback interface
+
+function core.http_add_fetch(httpenv)
+ httpenv.fetch = function(req, callback)
+ local handle = httpenv.fetch_async(req)
+
+ local function update_http_status()
+ local res = httpenv.fetch_async_get(handle)
+ if res.completed then
+ callback(res)
+ else
+ core.after(0, update_http_status)
+ end
+ end
+ core.after(0, update_http_status)
+ end
+
+ return httpenv
+end
diff --git a/src/script/lua_api/l_http.cpp b/src/script/lua_api/l_http.cpp
index 0bf9cfbad..5ea3b3f99 100644
--- a/src/script/lua_api/l_http.cpp
+++ b/src/script/lua_api/l_http.cpp
@@ -239,8 +239,18 @@ int ModApiHttp::l_get_http_api(lua_State *L)
void ModApiHttp::Initialize(lua_State *L, int top)
{
#if USE_CURL
- API_FCT(get_http_api);
- API_FCT(request_http_api);
+
+ bool isMainmenu = false;
+#ifndef SERVER
+ isMainmenu = ModApiBase::getGuiEngine(L) != nullptr;
+#endif
+
+ if (isMainmenu) {
+ API_FCT(get_http_api);
+ } else {
+ API_FCT(request_http_api);
+ }
+
#endif
}