CSM: Use server-like (and safe) HTTP API instead of Mainmenu-like

wsc-dfc
Elias Fleckenstein 2021-03-10 09:38:27 +01:00
parent d3780cefd1
commit bc79c2344e
2 changed files with 32 additions and 2 deletions

View 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

View 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
}