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:
@@ -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
|
||||
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user