feat: write curl body to a temporary JSON file (#673)
* Write curl body to a temporary JSON file. * Remove temp file after use * feat: use vim.fn.delete to delete files --------- Co-authored-by: yetone <yetoneful@gmail.com>
This commit is contained in:
parent
c3848d086c
commit
2a72dfa711
@ -1,4 +1,5 @@
|
||||
local api = vim.api
|
||||
local fn = vim.fn
|
||||
|
||||
local curl = require("plenary.curl")
|
||||
|
||||
@ -101,8 +102,6 @@ M.stream = function(opts)
|
||||
---@type AvanteCurlOutput
|
||||
local spec = Provider.parse_curl_args(Provider, code_opts)
|
||||
|
||||
Utils.debug("curl spec:", spec)
|
||||
|
||||
---@param line string
|
||||
local function parse_stream_data(line)
|
||||
local event = line:match("^event: (.+)$")
|
||||
@ -122,11 +121,22 @@ M.stream = function(opts)
|
||||
|
||||
local active_job
|
||||
|
||||
local curl_body_file = fn.tempname() .. ".json"
|
||||
local json_content = vim.json.encode(spec.body)
|
||||
fn.writefile(vim.split(json_content, "\n"), curl_body_file)
|
||||
|
||||
Utils.debug("curl body file:", curl_body_file)
|
||||
|
||||
local function cleanup()
|
||||
if Config.debug then return end
|
||||
vim.schedule(function() fn.delete(curl_body_file) end)
|
||||
end
|
||||
|
||||
active_job = curl.post(spec.url, {
|
||||
headers = spec.headers,
|
||||
proxy = spec.proxy,
|
||||
insecure = spec.insecure,
|
||||
body = vim.json.encode(spec.body),
|
||||
body = curl_body_file,
|
||||
stream = function(err, data, _)
|
||||
if err then
|
||||
completed = true
|
||||
@ -155,10 +165,12 @@ M.stream = function(opts)
|
||||
on_error = function()
|
||||
active_job = nil
|
||||
completed = true
|
||||
cleanup()
|
||||
opts.on_complete(nil)
|
||||
end,
|
||||
callback = function(result)
|
||||
active_job = nil
|
||||
cleanup()
|
||||
if result.status >= 400 then
|
||||
if Provider.on_error then
|
||||
Provider.on_error(result)
|
||||
|
Loading…
x
Reference in New Issue
Block a user