2023-01-30 20:19:06 +08:00

62 lines
1.0 KiB
Lua

--- TODO :wrapper for curl
local curl = {}
-- local example = {
-- data = {},
-- headers = {
-- k = 'v',
-- },
-- callback = function(output)
-- end,
-- }
curl.GET = function(uri, opts)
--- TODO :
end
curl.POST = function(uri, opts)
vim.validate {
uri = { uri, 's' },
opts = { opts, 't' }
}
local cmd = { 'curl', '-s', uri }
local size = 3
local function insert(...)
for _, v in ipairs { ... } do
size = size + 1
cmd[size] = v
end
end
local s = '"%s=%s"'
if opts.headers then
for k, v in pairs(opts.headers) do
insert('-H', s:format(k, v))
end
end
for k, v in pairs(opts.data) do
insert('-d', s:format(k, v))
end
local option
if opts.callback then
option = {
on_stdout = function (_, output)
opts.callback(table.concat(output))
end,
}
end
vim.fn.jobstart(table.concat(cmd, ' '), option)
end
return curl