From 58421d03b76cad6d5b59dd0b78e0877e7c1b48cf Mon Sep 17 00:00:00 2001 From: Jannis Baum Date: Sat, 27 Jul 2024 21:03:47 +0200 Subject: [PATCH] refactor(#7): curl data from stdin --- autoload/vivify.vim | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/autoload/vivify.vim b/autoload/vivify.vim index 0e11f4b..6b75e69 100644 --- a/autoload/vivify.vim +++ b/autoload/vivify.vim @@ -4,16 +4,32 @@ let s:viv_url = 'http://localhost:' . ($VIV_PORT == '' ? '31622' : $VIV_PORT) " See here: https://stackoverflow.com/questions/74999614/difference-between-vims-job-start-function-and-neovims-jobstart-functi if has("nvim") let s:job_start = function("jobstart") + + " job is job_id as returned from jobstart() + function! s:stdin_send_and_close(job, data) + call chansend(a:job, a:data) + call chanclose(a:job, 'stdin') + endfunction else + " job is job object as returned from job_start() + function! s:stdin_send_and_close(job, data) + let l:channel = job_getchannel(a:job) + call ch_sendraw(l:channel, a:data) + call ch_close_in(l:channel) + endfunction + let s:job_start = function("job_start") endif function! s:post(data) - call s:job_start([ - \ 'curl', '-X', 'POST', '-H', 'Content-type: application/json', - \ '--data', json_encode(a:data), + let l:job = s:job_start([ + \ 'curl', + \ '-X', 'POST', + \ '-H', 'Content-type: application/json', + \ '--data', '@-', \ s:viv_url . '/viewer' . expand('%:p') \]) + call s:stdin_send_and_close(l:job, json_encode(a:data)) endfunction function! vivify#sync_content()