Skip to content

Commit e0edb29

Browse files
committed
feat: implementing backend-agnostic run_request
1 parent c349020 commit e0edb29

File tree

3 files changed

+51
-20
lines changed

3 files changed

+51
-20
lines changed

lua/rest-nvim/config/init.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ local config = {
55
result_split_in_place = false,
66
skip_ssl_verification = false,
77
encode_url = true,
8+
-- one of 'classic' or 'treesitter'
9+
engine = 'classic',
810
highlight = {
911
enabled = true,
1012
timeout = 150,

lua/rest-nvim/init.lua

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
1-
local request = require("rest-nvim.request")
1+
local request = require("rest-nvim.request.classic")
22
local config = require("rest-nvim.config")
33
local curl = require("rest-nvim.curl")
44
local log = require("plenary.log").new({ plugin = "rest.nvim" })
55

66
local rest = {}
77
local Opts = {}
8-
local LastOpts = {}
8+
local defaultRequestOpts = {
9+
verbose = false,
10+
highlight = false,
11+
engine = 'classic'
12+
}
913

14+
local LastOpts = {}
1015
rest.setup = function(user_configs)
1116
config.set(user_configs or {})
17+
1218
end
1319

1420
-- run will retrieve the required request information from the current buffer
@@ -31,27 +37,29 @@ end
3137
-- @param string filename to load
3238
-- @param opts table
3339
-- 1. keep_going boolean keep running even when last request failed
40+
-- 2. verbose boolean
3441
rest.run_file = function(filename, opts)
3542
log.info("Running file :" .. filename)
36-
local new_buf = vim.api.nvim_create_buf(false, false)
43+
opts = vim.tbl_deep_extend(
44+
"force", -- use value from rightmost map
45+
defaultRequestOpts,
46+
opts or {}
47+
)
48+
backend = require("rest-nvim.request."..opts.engine)
49+
50+
-- 0 on error or buffer handle
51+
local new_buf = vim.api.nvim_create_buf(true, false)
3752

3853
vim.api.nvim_win_set_buf(0, new_buf)
3954
vim.cmd.edit(filename)
40-
local last_line = vim.fn.line("$")
41-
42-
-- reset cursor position
43-
vim.fn.cursor(1, 1)
44-
local curpos = vim.fn.getcurpos()
45-
while curpos[2] <= last_line do
46-
local ok, req = request.buf_get_request(new_buf, curpos)
47-
if ok then
48-
-- request.print_request(req)
49-
curpos[2] = req.end_line + 1
50-
rest.run_request(req, opts)
51-
else
52-
return false, req
53-
end
55+
56+
local requests = backend.buf_list_requests(new_buf)
57+
for _, req in pairs(requests) do
58+
vim.pretty_print("Request:")
59+
vim.pretty_print(req)
60+
rest.run_request(req, opts)
5461
end
62+
5563
return true
5664
end
5765

@@ -62,12 +70,11 @@ end
6270
-- @param opts table
6371
-- 1. keep_going boolean keep running even when last request failed
6472
rest.run_request = function(req, opts)
73+
-- TODO rename result to req
6574
local result = req
6675
opts = vim.tbl_deep_extend(
6776
"force", -- use value from rightmost map
68-
{ verbose = false,
69-
highlight = false
70-
}, -- defaults
77+
defaultRequestOpts,
7178
opts or {}
7279
)
7380

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ local function get_curl_args(bufnr, headers_end, end_line)
177177
local curl_args = {}
178178
local body_start = end_line
179179

180+
log.debug("Getting curl args between lines", headers_end, " and ", end_line)
180181
for line_number = headers_end, end_line do
181182
local line_content = vim.fn.getbufline(bufnr, line_number)[1]
182183

@@ -399,6 +400,27 @@ M.stringify_request = function(req, opts)
399400
return (str)
400401
end
401402

403+
M.buf_list_requests = function(buf, _opts)
404+
local last_line = vim.fn.line("$")
405+
local requests = {}
406+
407+
-- reset cursor position
408+
vim.fn.cursor({1, 1})
409+
local curpos = vim.fn.getcurpos()
410+
log.debug("Listing requests for buf ", buf)
411+
while curpos[2] <= last_line do
412+
local ok, req = M.buf_get_request(buf, curpos)
413+
if ok then
414+
curpos[2] = req.end_line + 1
415+
requests[#requests + 1] = req
416+
else
417+
break
418+
end
419+
end
420+
-- log.debug("found " , #requests , "requests")
421+
return requests
422+
end
423+
402424
local select_ns = vim.api.nvim_create_namespace("rest-nvim")
403425
M.highlight = function(bufnr, start_line, end_line)
404426
local opts = config.get("highlight") or {}

0 commit comments

Comments
 (0)