diff options
author | Jeija <norrepli@gmail.com> | 2016-02-18 11:38:47 +0100 |
---|---|---|
committer | est31 <MTest31@outlook.com> | 2016-02-22 15:39:41 +0100 |
commit | 31e0667a4a53a238d0321194b57b083bd74c0a5b (patch) | |
tree | 24c049c95a08b82f45dcde77419f50ee3a00639f /builtin/game | |
parent | a3892f5a6632550bf0c14c18e6902f6ae06bb567 (diff) | |
download | minetest-31e0667a4a53a238d0321194b57b083bd74c0a5b.tar.gz minetest-31e0667a4a53a238d0321194b57b083bd74c0a5b.tar.bz2 minetest-31e0667a4a53a238d0321194b57b083bd74c0a5b.zip |
Add Lua interface to HTTPFetchRequest
This allows mods to perform both asynchronous and synchronous HTTP
requests. Mods are only granted access to HTTP APIs if either mod
security is disabled or if they are whitelisted in any of the
the secure.http_mods and secure.trusted_mods settings.
Adds httpfetch_caller_alloc_secure to generate random, non-predictable
caller IDs so that lua mods cannot spy on each others HTTP queries.
Diffstat (limited to 'builtin/game')
-rw-r--r-- | builtin/game/misc.lua | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/builtin/game/misc.lua b/builtin/game/misc.lua index bacadf18f..d0e67bd88 100644 --- a/builtin/game/misc.lua +++ b/builtin/game/misc.lua @@ -178,3 +178,22 @@ function core.raillike_group(name) end return id 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 |