Fix OPDS: add auth token to URL and hot-update in-memory servers

- Append ?token= auth param to OPDS catalog URL
- Replace any existing stale Bookhoard entry (with or without token)
- Hot-update OPDS plugin's in-memory servers table so catalog
  appears immediately without restarting KOReader
This commit is contained in:
2026-05-29 22:51:50 -04:00
parent 89bdcc50f3
commit 98eb57e3f7
+30 -9
View File
@@ -578,28 +578,49 @@ function Bookhoard:startRegistrationPoll()
end
function Bookhoard:setupOPDS()
if not self.settings.server_url or not self.settings.device_id then
if not self.settings.server_url or not self.settings.device_id
or not self.settings.auth_token then
return false
end
local opds_url = self.settings.server_url
local opds_base_url = self.settings.server_url
.. "/opds/devices/" .. self.settings.device_id .. "/catalog"
local opds_url = opds_base_url .. "?token=" .. self.settings.auth_token
local opds_settings_file = DataStorage:getSettingsDir() .. "/opds.lua"
local opds_settings = LuaSettings:open(opds_settings_file)
local servers = opds_settings:readSetting("servers", {})
for _, server in ipairs(servers) do
if server.url == opds_url then
return true
local found = false
for i, server in ipairs(servers) do
if server.url and (
server.url == opds_url
or server.url == opds_base_url
or server.url:startswith(opds_base_url .. "?")
) then
servers[i] = {
title = "Bookhoard",
url = opds_url,
}
found = true
break
end
end
table.insert(servers, {
title = "Bookhoard",
url = opds_url,
})
if not found then
table.insert(servers, {
title = "Bookhoard",
url = opds_url,
})
end
opds_settings:saveSetting("servers", servers)
opds_settings:flush()
if self.ui.opds then
self.ui.opds.servers = servers
end
return true
end