1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Add HTTP API to main menu (#9998)

This commit is contained in:
rubenwardy 2020-06-06 17:17:08 +01:00 committed by GitHub
parent 7ec0e3df35
commit 60bab8b2d7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 289 additions and 112 deletions

View file

@ -83,6 +83,24 @@ void ModApiHttp::push_http_fetch_result(lua_State *L, HTTPFetchResult &res, bool
setstringfield(L, -1, "data", res.data);
}
// http_api.fetch_sync(HTTPRequest definition)
int ModApiHttp::l_http_fetch_sync(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
HTTPFetchRequest req;
read_http_fetch_request(L, req);
infostream << "Mod performs HTTP request with URL " << req.url << std::endl;
HTTPFetchResult res;
httpfetch_sync(req, res);
push_http_fetch_result(L, res, true);
return 1;
}
// http_api.fetch_async(HTTPRequest definition)
int ModApiHttp::l_http_fetch_async(lua_State *L)
{
@ -180,11 +198,35 @@ int ModApiHttp::l_request_http_api(lua_State *L)
return 1;
}
int ModApiHttp::l_get_http_api(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
lua_newtable(L);
HTTP_API(fetch_async);
HTTP_API(fetch_async_get);
HTTP_API(fetch_sync);
return 1;
}
#endif
void ModApiHttp::Initialize(lua_State *L, int top)
{
#if USE_CURL
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
}

View file

@ -32,6 +32,9 @@ private:
static void read_http_fetch_request(lua_State *L, HTTPFetchRequest &req);
static void push_http_fetch_result(lua_State *L, HTTPFetchResult &res, bool completed = true);
// http_fetch_sync({url=, timeout=, post_data=})
static int l_http_fetch_sync(lua_State *L);
// http_fetch_async({url=, timeout=, post_data=})
static int l_http_fetch_async(lua_State *L);
@ -40,6 +43,9 @@ private:
// request_http_api()
static int l_request_http_api(lua_State *L);
// get_http_api()
static int l_get_http_api(lua_State *L);
#endif
public: