--- -- @module lcurl do --- Create HTTP multipart/formdata object. -- -- @treturn[1] httpform new curl HTTP Post object context function form() end --- Create Easy object -- -- @tparam[opt] table options -- @treturn[1] easy new curl easy object -- -- @usage -- c = curl.easy{ -- url = 'http://example.com', -- [curl.OPT_VERBOSE] = true, -- } -- function easy() end --- Create Multi object -- -- @tparam[opt] table options -- @treturn[1] multi new curl multi object -- -- @usage -- m = curl.multi{ -- socketfunction = handle_socket; -- timerfunction = start_timeout; -- } -- function multi() end --- Create Share object -- -- @tparam[opt] table options -- @treturn[1] share new curl share object function share() end --- Returns libcurl version as human readable string -- function version() end --- Returns libcurl version as table -- -- @tparam[opt] string param specific version info -- @treturn[1] table full version into if `param` was not specify -- @return[2] specific info parameter -- -- @usage -- proto = curl.version_info('protocols') -- if proto.HTTP then ... -- libcurl support http protocol function version_info() end --- File description table. -- -- Representation for `struct curl_fileinfo` -- -- @table curl_fileinfo -- -- @tfield string filename -- @tfield integer filetype -- @tfield integer time -- @tfield integer perm -- @tfield integer uid -- @tfield integer gid -- @tfield integer size -- @tfield integer hardlinks -- @tfield integer flags -- @tfield table strings can have this string fields: `time`, `perm` , `user` , `group`, `target` end --- HTTP multipart/formdata object -- @type httpform -- do --- Add new part to form. -- -- @tparam string name provide the name of this part -- @tparam string content actual data to send -- @tparam[opt] string type provides the content-type for this part -- @tparam[opt] table headers specifies extra headers for the form POST section -- @return[1] self function add_content() end --- Add new part to form. -- -- @tparam string name provide the name of this part -- @tparam string filename provides the filename field in the content header -- @tparam string content actual data to send -- @tparam[opt] string type provides the content-type for this part -- @tparam[opt] table headers specifies extra headers for the form POST section -- @return[1] self function add_buffer() end --- Add new part to form. -- -- @tparam string name provide the name of this part -- @tparam string path path to file that contain actual data to send -- @tparam[opt] string type provides the content-type for this part -- @tparam[opt] string filename provides the filename field in the content header. -- By default it is basename of path. -- @tparam[opt] table headers specifies extra headers for the form POST section -- @return[1] self function add_file() end --- Add new part to form. -- -- @tparam string name provide the name of this part -- @tparam[opt] string filename provides the filename field in the content header. -- @tparam[opt] string type provides the content-type for this part -- @tparam[opt] table headers specifies extra headers for the form POST section -- @tparam number size stream size in bytes -- @tparam function/object reader -- @param[opt] context reader context -- @return[1] self -- -- @see easy:setopt_readfunction function add_stream() end --- Serialize multipart/formdata HTTP POST chain. -- -- @return[1] string serialized data -- -- @usage print(post:get()) -- function get() end --- Serialize multipart/formdata HTTP POST chain. -- -- Writer function can return true or number of written bytes. -- Also if function does not return anything is considered as success. -- -- @tparam function writer -- @param[opt] context writer context -- @return[1] self -- -- @usage -- t = {} -- post:get(table.insert, t) -- print(table.concat(t)) -- function get() end --- Serialize multipart/formdata HTTP POST chain. -- -- This call same as httpform:get(writer.write, writer) -- -- @tparam object writer -- @return[1] self -- -- @usage -- f = io.open(...) -- post:get(f) -- function get() end --- Free multipart/formdata. -- function free() end end --- Curl error object -- @type error -- do --- Get the error category. -- -- @treturn string string of error category (curl.ERROR_XXX constants) -- -- @usage -- if err:category() == curl.ERROR_EASY then -- -- proceed easy error -- end function category ()end --- Get the number value of error. -- -- @treturn number number of error (curl.E_XXX constants) function no ()end --- Get the error name. -- -- @treturn string error name (e.g. "UNSUPPORTED_PROTOCOL", "BAD_OPTION") function name ()end --- Get the error description. -- -- @treturn string error description (e.g. "Login denied") function msg ()end --- Get the full error description. -- -- @treturn string string that contain name, message and number of error function __tostring ()end end --- Easy curl object -- @type easy -- do --- Perform a file transfer -- -- @return[1] self function perfom() end --- URL encodes the given string -- -- @tparam string url -- @return[1] encoded url function escape() end --- URL decodes the given string -- -- @tparam string url -- @return[1] decoded url function unescape() end --- Re-initializes all options previously set. -- -- @treturn easy self function reset() end --- Pause and unpause a connection. -- -- @tparam number mask set of bits that sets the new state of the connection (one of PAUSE_XXX constant) -- @treturn easy self function pause() end --- End easy session -- function close() end --- Set options. -- -- @tparam number|table opt one of `curl.OPT_XXX` constant or options table -- @param ... value -- @treturn easy self -- -- @usage -- c:setopt(curl.OPT_URL, "http://example.com") -- c:setopt(curl.OPT_READFUNCTION, -- function(t, n) return table.remove(t) end, -- {"1111", "2222"} -- ) --c:setopt{ -- url = 'http://example.com', -- [curl.OPT_VERBOSE] = true, -- } function setopt() end --- Reset option to default value. -- -- @tparam number opt one of `curl.OPT_XXX` constant or options table -- @treturn easy self -- -- @usage -- c:unsetopt(curl.OPT_URL) -- c:unsetopt(curl.OPT_READFUNCTION) function unsetopt() end --- Get information. -- -- @tparam number info one of `curl.INFO_XXX` constant -- @return value -- -- @usage -- print(c:getinfo(curl.INFO_EFFECTIVE_URL)) -- print(c:getinfo(curl.INFO_TOTAL_TIME)) -- print(c:getinfo(curl.INFO_RESPONSE_CODE)) function getinfo() end --- Set writer function. -- -- A callback accepting one or two parameters. -- The first is the writer context if any, and the second is a string with the data to be written. -- Function must return `true` (any non number true value) or full data length or nothing to continue operation. -- Otherwise the transfer will be aborted with an error. -- -- @tparam function writer -- @param[opt] context writer context -- @return[1] self -- function setopt_writefunction() end --- Set writer function. -- -- This call same as easy:setopt_writefunction(writer.write, writer) -- -- @tparam object writer -- @return[1] self -- function setopt_writefunction() end --- Set header function. -- -- A callback accepting one or two parameters. -- The first is the writer context if any, and the second is a string with the data to be written. -- Function must return `true` (any non number true value) or full data length or nothing to continue operation. -- Otherwise the transfer will be aborted with an error. -- -- @tparam function writer -- @param[opt] context writer context -- @return[1] self -- function setopt_headerfunction() end --- Set header function. -- -- This call same as easy:setopt_headerfunction(writer.header, writer) -- -- @tparam object writer -- @return[1] self -- function setopt_headerfunction() end --- Set reader function. -- -- A callback accepting one or two parameters. -- The first is the reader context if any, and the second is the maximum amount of data to be read. -- You can ignore second argument and pass as mach data as you need. lcurl can split data. -- Function must return data to continue operation. To stop operation it must return empty string or nil or nothing. -- Otherwise the transfer will be aborted with an error. -- -- -- @tparam function reader -- @param[opt] context reader context -- @return[1] self -- -- @usage -- local counter = 10 -- c:setopt_readfunction(function() -- if counter > 0 then -- counter = counter - 1 -- return 'a' -- end -- end) function setopt_readfunction() end --- Set reader function. -- -- This call same as easy:setopt_readfunction(reader.read, reader) -- -- @tparam object reader -- @return[1] self -- function setopt_readfunction() end --- Set progress function. -- -- A callback accepting four or five parameters. -- The first is the reader context if any, the second is the total number -- of bytes expected to be downloaded in this transfer, -- the third is the number of bytes downloaded so far, -- the fourth is the total number of bytes expected to be uploaded -- in this transfer, and the fifth is the number of bytes uploaded so far. -- Function must return `true` or `1` or nothing to continue operation. -- Otherwise the transfer will be aborted with an error `ABORTED_BY_CALLBACK`.
-- -- !!! NOTE !!! This is differents form libcurl API. In libcurl returning a non-zero -- value from this callback will cause libcurl to abort the transfer and return. -- This done to be consisted with writefunction that should return `true` to continue. -- -- @tparam function progress -- @param[opt] context progress context -- @return[1] self -- function setopt_progressfunction() end --- Set progress function. -- -- This call same as easy:setopt_progressfunction(progress.progress, progress) -- -- @tparam object progress -- @return[1] self -- function setopt_progressfunction() end --- Set seek callback function. -- -- A callback accepting two or three parameters. -- The first is the seek context if any, the second is the `origin` value -- same as in file.seek function from io library. Can be (`cur`, `set` and `end`). -- The third parameter is offset or position in input stream. -- If stream can not be seeking and need stop current transfer operation -- function have to raise Lua error or returns `nil` and error message. -- To indicate success function have to return any truthy value -- In other case Function must return `true` or `1` or nothing to continue operation. -- False value indicate that while the seek failed, libcurl is free to work -- around the problem if possible. -- -- !!! NOTE !!! This is differents form libcurl API by swapping parameters in callback. -- It done to be compatiable with Lua io library. -- -- @tparam function seek -- @param[opt] context seek context -- @return[1] self -- function setopt_seekfunction() end --- Set seek callback function. -- -- This call same as easy:setopt_seekfunction(stream.seek, seek) -- -- @tparam object stream -- @return[1] self -- function setopt_seekfunction() end --- Set debug callback function. -- -- A callback accepting two or three parameters. -- The first is the debug context if any, the second is the `data_type` value -- which represent what kinde of data is passed. This value can be one of -- constant `INFO_TEXT`, `INFO_HEADER_IN`, `INFO_HEADER_OUT`, `INFO_DATA_IN`, -- `INFO_DATA_OUT`, `INFO_SSL_DATA_IN`, `INFO_SSL_DATA_OUT`. -- The third parameter is data itself. -- Any errors and returning values from this callback are ignored. -- -- @tparam function debug -- @param[opt] context debug context -- @return[1] self -- function setopt_debugfunction() end --- Set debug callback function. -- -- This call same as easy:setopt_debugfunction(debug.debug, debug) -- -- @tparam object debug -- @return[1] self -- function setopt_debugfunction() end --- Set match callback function. -- -- A callback accepting two or three parameters. -- The first is the match context if any, the second is the pattern string, -- the third is the string to match to pattern. -- Function must return truthy value to indicate that string match to pattern. -- If function raise error or return nil and error message then it indicate -- that curl should interrupt current transfer operation. -- False value indicate that strind does not match to pattern -- -- @tparam function match -- @param[opt] context match context -- @return[1] self -- function setopt_fnmatch_function() end --- Set match callback function. -- -- This call same as easy:setopt_fnmatch_function(match.match, match) -- -- @tparam object match -- @return[1] self -- function setopt_fnmatch_function() end --- Set chunk begin function. -- -- A callback accepting two or three parameters. -- The first is the chunk context if any, the second is the @{curl_fileinfo} table. -- The third parameter contains number of chunks remaining per the transfer. -- Function must return truthy value or nothing to indicate that transfer can begin. -- If function raise error or return nil and error message then it indicate -- that curl should interrupt current transfer operation. -- False value indicate that curl should skip this chunk. -- -- @tparam function chunk_bgn -- @param[opt] context chunk context -- @return[1] self -- function setopt_chunk_bgn_function() end --- Set chunk begin function. -- -- This call same as easy:setopt_chunk_bgn_function(context.chunk_bgn, context) -- -- @tparam object context -- @return[1] self -- function setopt_chunk_bgn_function() end --- Set chunk end function. -- -- A callback accepting zero or one parameter. -- The only parameter is the chunk context if any. -- Function must return truthy value or nothing to indicate that transfer can continue -- otherwise it indicate that curl should interrupt current transfer operation. -- -- @tparam function chunk_end -- @param[opt] context chunk context -- @return[1] self -- function setopt_chunk_end_function() end --- Set chunk begin function. -- -- This call same as easy:setopt_chunk_end_function(context.chunk_end, context) -- -- @tparam object context -- @return[1] self -- function setopt_chunk_end_function() end --- Set HTTP multipart/formdata. -- -- Caller does not have to save data. -- -- @tparam httpform data -- @return[1] self function setopt_httppost() end --- Set HTTP multipart/formdata. -- -- @tparam string data -- @tparam[opt=#data] number length -- @return[1] self function setopt_postfields() end --- Set curl share object. -- -- Caller does not have to save data. -- -- @tparam share data -- @return[1] self function setopt_share() end end --- Muli curl object -- @type multi -- do --- Add Easy object. -- -- Caller must ensure that easy object is alive until end of operation. -- -- @treturn multi self -- @tparam easy handle function add_handle() end --- Remove Easy object. -- -- @tparam easy handle -- @treturn multi self function remove_handle() end --- reads/writes available data from each easy handle. -- -- @treturn number handles number of active easy handles function perfom() end --- Read multi stack informationals. -- -- Note. If curl_multi_remove_handle fail then there no error occure but handle jast stay in multi handle. -- -- @tparam[opt] remove remove easy handle if it done. -- @treturn[1] number 0 there no informationals -- @treturn[2] easy handle -- @treturn[2] boolean true -- @treturn[3] easy handle -- @treturn[3] nil -- @treturn[3] error error code function info_read() end --- Set options. -- -- @tparam number|table opt one of `curl.OPT_MULTI_XXX` constant -- @param ... value -- @treturn multi self -- -- @usage -- c:setopt(curl.OPT_MULTI_MAXCONNECTS, 10) -- c:setopt{maxconnects = 10} function setopt() end --- Perform socket action. -- -- @tparam[opt=curl.SOCKET_TIMEOUT] number socket -- @tparam[opt=0] number mask -- @treturn multi self -- -- @usage -- c:socket_action() -- c:socket_action(sock_fd, curl.CSELECT_IN) -- c:socket_action(sock_fd, curl.CSELECT_OUT) function socket_action() end --- Set timer callback. -- -- @tparam function timer timer callback -- @param[opt] context timer context -- @treturn multi self -- function setopt_timerfunction() end --- Set timer callback. -- -- This call same as easy:setopt_writefunction(timer.timer, timer) -- -- @tparam userdata|table timer timer object -- @treturn multi self -- function setopt_timerfunction() end --- Polls on all easy objects in a multi object. -- -- @tparam[opt] number timeout milliseconds timeout. By default it is `multi:timeout()`. -- @treturn number number of affected objects -- function wait() end --- How long to wait for action before proceeding. -- -- @treturn number timeout milliseconds timeout -- function timeout() end --- End multi session. -- function close() end end --- Share curl object -- @type share -- do --- Set options. -- -- @tparam number|table opt one of `curl.OPT_SHARE_XXX` constant -- @param ... value -- @treturn share self -- -- @usage -- c:setopt(curl.OPT_SHARE_SHARE, curl.LOCK_DATA_COOKIE) -- c:setopt{share = curl.LOCK_DATA_COOKIE} function setopt() end --- End share session. -- function close() end end