2023-06-12 09:00:00 +01:00
|
|
|
local net = require("@lune/net")
|
|
|
|
|
|
|
|
-- Should decompress automatically by default
|
|
|
|
|
|
|
|
local response = net.request({
|
|
|
|
url = "https://httpbingo.org/gzip",
|
|
|
|
headers = {
|
|
|
|
["Accept-Encoding"] = "gzip",
|
2024-01-04 19:00:44 +00:00
|
|
|
} :: { [string]: string },
|
2023-06-12 09:00:00 +01:00
|
|
|
})
|
|
|
|
|
|
|
|
assert(
|
|
|
|
response.ok,
|
|
|
|
"Request failed with status "
|
|
|
|
.. tostring(response.statusCode)
|
|
|
|
.. " "
|
|
|
|
.. tostring(response.statusMessage)
|
|
|
|
)
|
|
|
|
|
|
|
|
local success, json = pcall(net.jsonDecode, response.body)
|
|
|
|
assert(success, "Failed to decode json response\n" .. tostring(json))
|
|
|
|
|
|
|
|
-- Content encoding header should no longer exist when automatically decompressed
|
|
|
|
|
|
|
|
assert(
|
|
|
|
response.headers["content-encoding"] == nil,
|
|
|
|
"Content encoding header still exists after automatic decompression"
|
|
|
|
)
|
|
|
|
|
|
|
|
-- Should do nothing when explicitly disabled
|
|
|
|
|
|
|
|
local response2 = net.request({
|
|
|
|
url = "https://httpbingo.org/gzip",
|
|
|
|
headers = {
|
|
|
|
["Accept-Encoding"] = "gzip",
|
2024-01-04 19:00:44 +00:00
|
|
|
} :: { [string]: string },
|
2023-06-12 09:00:00 +01:00
|
|
|
options = { decompress = false },
|
|
|
|
})
|
|
|
|
|
|
|
|
assert(
|
|
|
|
response2.ok,
|
|
|
|
"Request failed with status "
|
|
|
|
.. tostring(response2.statusCode)
|
|
|
|
.. " "
|
|
|
|
.. tostring(response2.statusMessage)
|
|
|
|
)
|
|
|
|
|
|
|
|
local success2 = pcall(net.jsonDecode, response2.body)
|
|
|
|
assert(not success2, "Decompression disabled still returned json response")
|
|
|
|
|
|
|
|
-- Content encoding header should still exist when not automatically decompressed
|
|
|
|
|
|
|
|
assert(
|
|
|
|
response2.headers["content-encoding"] ~= nil,
|
|
|
|
"Content encoding header is missing when automatic decompression is disabled"
|
|
|
|
)
|