Account for result pagination when fetching notes or notebooks from Joplin API (#7162)

The Joplin Web Clipper API now paginates results for the APIs for fetching notes or notebooks

Iterate through Joplin API results in order
pull/7345/head^2
Georgelemental 3 years ago committed by GitHub
parent eb57c4e0da
commit 053df60553
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -61,34 +61,49 @@ end
-- If successful returns id of found note.
function JoplinClient:findNoteByTitle(title, notebook_id)
local url = "http://"..self.server_ip..":"..self.server_port.."/notes?".."token="..self.auth_token.."&fields=id,title,parent_id"
local notes = self:_makeRequest(url, "GET")
for _, note in pairs(notes) do
if note.title == title then
if notebook_id == nil or note.parent_id == notebook_id then
return note.id
local url_base = "http://"..self.server_ip..":"..self.server_port.."/notes?".."token="..self.auth_token.."&fields=id,title,parent_id&page="
local url
local page = 1
local has_more
repeat
url = url_base..page
local notes = self:_makeRequest(url, "GET")
has_more = notes.has_more
for _, note in ipairs(notes.items) do
if note.title == title then
if notebook_id == nil or note.parent_id == notebook_id then
return note.id
end
end
end
end
page = page + 1
until not has_more
return false
end
-- If successful returns id of found notebook (folder).
function JoplinClient:findNotebookByTitle(title)
local url = "http://"..self.server_ip..":"..self.server_port.."/folders?".."token="..self.auth_token.."&".."query="..title
local url_base = "http://"..self.server_ip..":"..self.server_port.."/folders?".."token="..self.auth_token.."&".."query="..title.."&page="
local folders = self:_makeRequest(url, "GET")
for _, folder in pairs(folders) do
if folder.title== title then
return folder.id
end
end
local url
local page = 1
local has_more
repeat
url = url_base..page
local folders = self:_makeRequest(url, "GET")
has_more = folders.has_more
for _, folder in ipairs(folders.items) do
if folder.title == title then
return folder.id
end
end
page = page + 1
until not has_more
return false
end
@ -109,10 +124,10 @@ end
-- If successful returns id of created note.
function JoplinClient:createNote(title, note, parent_id, created_time)
local request_body = {
title = title,
body = note,
parent_id = parent_id,
created_time = created_time
title = title,
body = note,
parent_id = parent_id,
created_time = created_time
}
local url = "http://"..self.server_ip..":"..self.server_port.."/notes?".."token="..self.auth_token
local response = self:_makeRequest(url, "POST", request_body)

Loading…
Cancel
Save