diff options
author | Lejo <Lejo_1@web.de> | 2020-07-30 00:16:21 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-29 23:16:21 +0200 |
commit | 715a123a33db7b0f191259ba68cbc9c565d0d4e8 (patch) | |
tree | 5925cc93ad339477d58dcea42bcf79b62e2ded5d /src/script/lua_api | |
parent | f34abaedd2b9277c1862cd9b82ca3338747f104e (diff) | |
download | minetest-715a123a33db7b0f191259ba68cbc9c565d0d4e8.tar.gz minetest-715a123a33db7b0f191259ba68cbc9c565d0d4e8.tar.bz2 minetest-715a123a33db7b0f191259ba68cbc9c565d0d4e8.zip |
Add PUT and DELETE request + specific method value to HTTP API (#9909)
Diffstat (limited to 'src/script/lua_api')
-rw-r--r-- | src/script/lua_api/l_http.cpp | 29 | ||||
-rw-r--r-- | src/script/lua_api/l_http.h | 4 |
2 files changed, 28 insertions, 5 deletions
diff --git a/src/script/lua_api/l_http.cpp b/src/script/lua_api/l_http.cpp index ec43bf174..5ea3b3f99 100644 --- a/src/script/lua_api/l_http.cpp +++ b/src/script/lua_api/l_http.cpp @@ -49,17 +49,40 @@ void ModApiHttp::read_http_fetch_request(lua_State *L, HTTPFetchRequest &req) req.multipart = getboolfield_default(L, 1, "multipart", false); req.timeout = getintfield_default(L, 1, "timeout", 3) * 1000; - // post_data: if table, post form data, otherwise raw data + lua_getfield(L, 1, "method"); + if (lua_isstring(L, -1)) { + std::string mth = getstringfield_default(L, 1, "method", ""); + if (mth == "GET") + req.method = HTTP_GET; + else if (mth == "POST") + req.method = HTTP_POST; + else if (mth == "PUT") + req.method = HTTP_PUT; + else if (mth == "DELETE") + req.method = HTTP_DELETE; + } + lua_pop(L, 1); + + // post_data: if table, post form data, otherwise raw data DEPRECATED use data and method instead lua_getfield(L, 1, "post_data"); + if (lua_isnil(L, 2)) { + lua_pop(L, 1); + lua_getfield(L, 1, "data"); + } + else { + req.method = HTTP_POST; + } + if (lua_istable(L, 2)) { lua_pushnil(L); while (lua_next(L, 2) != 0) { - req.post_fields[readParam<std::string>(L, -2)] = readParam<std::string>(L, -1); + req.fields[readParam<std::string>(L, -2)] = readParam<std::string>(L, -1); lua_pop(L, 1); } } else if (lua_isstring(L, 2)) { - req.post_data = readParam<std::string>(L, 2); + req.raw_data = readParam<std::string>(L, 2); } + lua_pop(L, 1); lua_getfield(L, 1, "extra_headers"); diff --git a/src/script/lua_api/l_http.h b/src/script/lua_api/l_http.h index de6e51b37..c3a2a5276 100644 --- a/src/script/lua_api/l_http.h +++ b/src/script/lua_api/l_http.h @@ -32,10 +32,10 @@ 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=}) + // http_fetch_sync({url=, timeout=, data=}) static int l_http_fetch_sync(lua_State *L); - // http_fetch_async({url=, timeout=, post_data=}) + // http_fetch_async({url=, timeout=, data=}) static int l_http_fetch_async(lua_State *L); // http_fetch_async_get(handle) |