]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
CSM: Use server-like (and safe) HTTP API instead of Mainmenu-like
authorElias Fleckenstein <eliasfleckenstein@web.de>
Wed, 10 Mar 2021 08:38:27 +0000 (09:38 +0100)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Wed, 10 Mar 2021 08:38:27 +0000 (09:38 +0100)
builtin/client/util.lua
src/script/lua_api/l_http.cpp

index aea15e00ff59dc83789d203c4f28fb5f2d123f98..440f99ebc7ecf7429616b176aff6c1f89a701519 100644 (file)
@@ -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
index 0bf9cfbad7431d7be295c9a89c27f75996d1a9fa..5ea3b3f996f0143ea4300f111166825a3ae0b12a 100644 (file)
@@ -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
 }