Skip to content

Commit 87941ab

Browse files
committed
feat: implementing backend-agnostic run_request
1 parent f1597ab commit 87941ab

File tree

2 files changed

+52
-24
lines changed

2 files changed

+52
-24
lines changed

lua/rest-nvim/init.lua

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
1-
local request = require("rest-nvim.request")
1+
local backend = require("rest-nvim.request")
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
1521
-- and then execute curl
1622
-- @param verbose toggles if only a dry run with preview should be executed (true = preview)
1723
rest.run = function(verbose)
18-
local ok, result = request.get_current_request()
24+
local ok, result = backend.get_current_request()
1925
if not ok then
2026
log.error("Failed to run the http request:")
2127
log.error(result)
@@ -31,27 +37,28 @@ 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+
49+
-- 0 on error or buffer handle
50+
local new_buf = vim.api.nvim_create_buf(true, false)
3751

3852
vim.api.nvim_win_set_buf(0, new_buf)
3953
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
54+
55+
local requests = backend.buf_list_requests(new_buf)
56+
for _, req in pairs(requests) do
57+
vim.pretty_print("Request:")
58+
vim.pretty_print(req)
59+
rest.run_request(req, opts)
5460
end
61+
5562
return true
5663
end
5764

@@ -62,12 +69,11 @@ end
6269
-- @param opts table
6370
-- 1. keep_going boolean keep running even when last request failed
6471
rest.run_request = function(req, opts)
72+
-- TODO rename result to req
6573
local result = req
6674
opts = vim.tbl_deep_extend(
6775
"force", -- use value from rightmost map
68-
{ verbose = false,
69-
highlight = false
70-
}, -- defaults
76+
defaultRequestOpts,
7177
opts or {}
7278
)
7379

@@ -92,7 +98,7 @@ rest.run_request = function(req, opts)
9298
end
9399

94100
if opts.highlight then
95-
request.highlight(result.bufnr, result.start_line, result.end_line)
101+
backend.highlight(result.bufnr, result.start_line, result.end_line)
96102
end
97103

98104
local request_id = vim.loop.now()
@@ -127,7 +133,7 @@ rest.last = function()
127133
end
128134

129135
if config.get("highlight").enabled then
130-
request.highlight(LastOpts.bufnr, LastOpts.start_line, LastOpts.end_line)
136+
backend.highlight(LastOpts.bufnr, LastOpts.start_line, LastOpts.end_line)
131137
end
132138

133139
local success_req, req_err = pcall(curl.curl_cmd, LastOpts)
@@ -140,7 +146,7 @@ rest.last = function()
140146
end
141147
end
142148

143-
rest.request = request
149+
rest.request = backend
144150

145151
rest.select_env = function(path)
146152
if path ~= nil then

lua/rest-nvim/request/init.lua

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)