Lua-cURLv3/examples/lcurl/curl_debug.lua

43 lines
1.3 KiB
Lua

--
-- convert `debug.c` example from libcurl examples
--
local curl = require "lcurl"
local function printf(...)
io.stderr:write(string.format(...))
end
local function dump(title, data, n)
n = n or 16
printf("%s, %10.10d bytes (0x%8.8x)\n", title, #data, #data)
for i = 1, #data do
if (i - 1) % n == 0 then printf("%4.4x: ", i-1) end
printf("%02x ", string.byte(data, i, i))
if i % n == 0 then printf("\n") end
end
if #data % n ~= 0 then printf("\n") end
end
local function my_trace(type, data)
local text
if type == curl.INFO_TEXT then printf("== Info: %s", data) end
if type == curl.INFO_HEADER_OUT then text = "=> Send header" end
if type == curl.INFO_DATA_OUT then text = "=> Send data" end
if type == curl.INFO_SSL_DATA_OUT then text = "=> Send SSL data" end
if type == curl.INFO_HEADER_IN then text = "<= Recv header" end
if type == curl.INFO_DATA_IN then text = "<= Recv data" end
if type == curl.INFO_SSL_DATA_IN then text = "<= Recv SSL data" end
if text then dump(text, data) end
end
local easy = curl.easy{
url = "http://google.com",
verbose = true,
debugfunction = my_trace,
followlocation = true,
writefunction = function()end,
}
easy:perform()