#!/usr/bin/env lua
local util = require("lib.util")
local def_headr = {
["User-Agent"] = "cia",
["Accept-Encoding"] = "gzip, deflate, br",
}
local head_to_args = function(t)
local args = {}
for k, v in pairs(t) do
args[#args + 1] = "-H" .. k .. ": " .. v
end
return args
end
local get = function(url, headr, args)
local fetch, hcode, def_args
def_args = {
"curl",
"--silent",
"--compressed",
"--write-out",
"%{http_code}",
"--globoff",
"--location",
url,
}
args = util.array_merge(def_args, args)
headr = util.table_merge(def_headr, headr)
args = util.array_merge(args, head_to_args(headr))
fetch = util.run(args)
hcode = fetch:match("%d*$")
fetch = fetch:gsub("%s*%d*$", "")
return fetch, tonumber(hcode)
end
local zip_link_to_file = function(url, headr, out)
local hcode, zip, rc, args
zip = os.tmpname()
args = { "-o" .. zip }
_, hcode = get(url, headr, args)
rc = (hcode == 200)
if rc then
rc = util.zip_ext_first(zip, out)
end
os.remove(zip)
if hcode and not rc then
util.error("curl: zip_link_to_file")
end
return rc
end
return {
get = get,
zip_link_to_file = zip_link_to_file,
}