---
-- cURL bindings. read the cURL curl_easy_setopt manpage.
-- As a convention all CURL_XXXXX and CURLXXXXX names are mapped to curl.XXXXX
-- constants. options taking a long now take a number, options taking a string
-- here take a string (no need to ensure the string will be available until
-- you call perform, the bindings do this for you). Functions to write like the
-- curl.OPT_WRITEFUNCTION and curl.OPT_HEADERFUNCTION take a string argument and
-- a number (the string len) must return a couple, byte,server and error message-- . if the number of byte returned is different from the string len it is
-- considered an error. this is an example of a callback factory:
--
-- function build_w_cb(t) -- return function(s,len) -- stores the received data in the table t -- table.insert(t,s) -- return number_of_byte_served, error_message -- number_of_byte_served ~= len is an error -- return len,nil -- end -- end ---- This cb factory stores all the chunks received in table t. you can have the -- whole file back using table.concat(t). The callback for -- curl.OPT_READFUNCTION takes a number, the number of the maximum amount of -- data that can return. Here a simple example of an infinite stream of '#':
-- function build_r_cb()
-- return function(n)
-- local s = string.rep("#",n)
-- return size_of_data,data
-- size_of_data = 0 means end of data
-- size_of_data must be <= n
-- return string.len(s),s
-- end
--end
--
-- curl_slist are mapped to lua tables {"item1","item2",...}. For example
-- curl.OPT_HTTPHEADER may be called in this way:
-- c:setopt(curl.OPT_HTTPHEADER,{"Referer: my_home!","Dummy-field: hello"})
--
-- Last important case is the curl.OPT_HTTPPOST for which a special syntax is
-- supported:
--
-- c:setopt(curl.OPT_HTTPPOST,{
--
-- {curl.FORM_COPYNAME,"name1",
-- curl.FORM_COPYCONTENTS,"data1",
-- curl.FORM_CONTENTTYPE,"Content-type: text/plain",
-- curl.FORM_END }
-- ,
-- {curl.FORM_COPYNAME,"name2",
-- curl.FORM_COPYCONTENTS,"data2",
-- curl.FORM_CONTENTTYPE,"Content-type: text/plain",
-- curl.FORM_END}
-- })
--
-- And now a simple example of an HTTP GET with a proxy:
--gl_b = {}
--gl_h = {}
--
--c = curl.easy_init()
--c:setopt(curl.OPT_URL,'http://tassi.web.cs.unibo.it/cgi-bin/stats.cgi')
--c:setopt(curl.OPT_WRITEFUNCTION,build_w_cb(gl_b))
--c:setopt(curl.OPT_HEADERFUNCTION,build_w_cb(gl_h))
--c:setopt(curl.OPT_PROXY,"localhost:3000")
--c:setopt(curl.OPT_PROXYUSERPWD,"ciccio:ciccio")
--print("\n\t$$ performing... returns code,error $$\n")
--print(c:perform())
--print("\n\t$$ here you see the header, line per line $$\n")
--table.foreach(gl_h,function(i,s) print(i.."= "..string.gsub(s,"\n","")) end)
--print("\n\t$$ and here you see the data, after concatenation of "..
-- table.getn(gl_b).." chunks $$\n")
--print(table.concat(gl_b))
--
---
-- Create a curl handler.
-- @return userdata The CURL* handler object.
function curl.easy_init() end
---
-- The setopt function.
-- @param opt number one of curl.OPT_*.
function setopt(opt,data) end
---
-- Starts curl.
-- @return number,errorstring number not zero means an error.
function perform() end
---
-- URLencodes the string.
-- @return string The escaped string.
function curl.escape(s) end
---
-- URLdecodes the string.
-- @return string The unescaped string.
function curl.unescape(s) end
---
-- version.
-- @return string The version string.
function curl.version() end
---
-- version informations.
-- @return table The version struct.
function curl.version_info() end