#!/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, }