aboutsummaryrefslogblamecommitdiff
path: root/lib/curl.lua
blob: 4c56325a553ef890c6cbf1f34d431bc5776da951 (plain) (tree)
1
2
3
4
5
6
7
8
9

                  
                                

                   

                                                  

 
                                
                       

                               
                                                        

           
                   

   
                                      
                                    
 
                    






                               





                                                          
 
                              

                                         
 
                                     

   
                                                  
                                  
 
                          
                              
 
                                        
 
                           

                                                 


                      
                                
                                                    


                 

   

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