feat: Send optional document metadata with KOSync progress uploads (#1820)
This commit is contained in:
@@ -87,6 +87,7 @@ STR_USERNAME: "Імя карыстальніка"
|
||||
STR_PASSWORD: "Пароль"
|
||||
STR_SYNC_SERVER_URL: "URL сервера сінхранізацыі"
|
||||
STR_DOCUMENT_MATCHING: "Супастаўленне дакументаў"
|
||||
STR_SEND_METADATA: "Адпраўляць метаданыя дакумента"
|
||||
STR_AUTHENTICATE: "Аўтарызацыя"
|
||||
STR_KOREADER_USERNAME: "Імя карыстальніка KOReader"
|
||||
STR_KOREADER_PASSWORD: "Пароль KOReader"
|
||||
|
||||
@@ -103,6 +103,7 @@ STR_USERNAME: "Nom d'usuari"
|
||||
STR_PASSWORD: "Contrasenya"
|
||||
STR_SYNC_SERVER_URL: "URL del servidor de sincronització"
|
||||
STR_DOCUMENT_MATCHING: "Coincidència de documents"
|
||||
STR_SEND_METADATA: "Envia metadades del document"
|
||||
STR_AUTHENTICATE: "Autentica"
|
||||
STR_KOREADER_USERNAME: "Nom d'usuari del KOReader"
|
||||
STR_KOREADER_PASSWORD: "Contrasenya del KOReader"
|
||||
|
||||
@@ -92,6 +92,7 @@ STR_USERNAME: "Uživatelské jméno"
|
||||
STR_PASSWORD: "Heslo"
|
||||
STR_SYNC_SERVER_URL: "URL synch. serveru"
|
||||
STR_DOCUMENT_MATCHING: "Párování dokumentů"
|
||||
STR_SEND_METADATA: "Odesílat metadata dokumentu"
|
||||
STR_AUTHENTICATE: "Ověření"
|
||||
STR_KOREADER_USERNAME: "Uživ. jméno KOReaderu"
|
||||
STR_KOREADER_PASSWORD: "Heslo KOReaderu"
|
||||
|
||||
@@ -97,6 +97,7 @@ STR_USERNAME: "Brugernavn"
|
||||
STR_PASSWORD: "Adgangskode"
|
||||
STR_SYNC_SERVER_URL: "Synkroniseringsserver-URL"
|
||||
STR_DOCUMENT_MATCHING: "Dokumentsammenkobling"
|
||||
STR_SEND_METADATA: "Send dokumentmetadata"
|
||||
STR_AUTHENTICATE: "Godkend"
|
||||
STR_KOREADER_USERNAME: "KOReader brugernavn"
|
||||
STR_KOREADER_PASSWORD: "KOReader adgangskode"
|
||||
|
||||
@@ -97,6 +97,7 @@ STR_USERNAME: "Gebruikersnaam"
|
||||
STR_PASSWORD: "Wachtwoord"
|
||||
STR_SYNC_SERVER_URL: "Sync-server URL"
|
||||
STR_DOCUMENT_MATCHING: "Documentkoppeling"
|
||||
STR_SEND_METADATA: "Documentmetadata versturen"
|
||||
STR_AUTHENTICATE: "Authenticatie"
|
||||
STR_KOREADER_USERNAME: "KOReader gebruikersnaam"
|
||||
STR_KOREADER_PASSWORD: "KOReader wachtwoord"
|
||||
|
||||
@@ -105,6 +105,7 @@ STR_USERNAME: "Username"
|
||||
STR_PASSWORD: "Password"
|
||||
STR_SYNC_SERVER_URL: "Sync Server URL"
|
||||
STR_DOCUMENT_MATCHING: "Document Matching"
|
||||
STR_SEND_METADATA: "Send Document Metadata"
|
||||
STR_AUTHENTICATE: "Authenticate"
|
||||
STR_KOREADER_USERNAME: "KOReader Username"
|
||||
STR_KOREADER_PASSWORD: "KOReader Password"
|
||||
|
||||
@@ -92,6 +92,7 @@ STR_USERNAME: "Käyttäjänimi"
|
||||
STR_PASSWORD: "Salasana"
|
||||
STR_SYNC_SERVER_URL: "Synkronointipalvelimen osoite"
|
||||
STR_DOCUMENT_MATCHING: "Dokumenttien tunnistus"
|
||||
STR_SEND_METADATA: "Lähetä asiakirjan metatiedot"
|
||||
STR_AUTHENTICATE: "Tunnistaudu"
|
||||
STR_KOREADER_USERNAME: "KOReader-käyttäjänimi"
|
||||
STR_KOREADER_PASSWORD: "KOReader-salasana"
|
||||
|
||||
@@ -97,6 +97,7 @@ STR_USERNAME: "Nom d’utilisateur"
|
||||
STR_PASSWORD: "Mot de passe"
|
||||
STR_SYNC_SERVER_URL: "URL du serveur"
|
||||
STR_DOCUMENT_MATCHING: "Correspondance"
|
||||
STR_SEND_METADATA: "Envoyer métadonnées"
|
||||
STR_AUTHENTICATE: "Connexion"
|
||||
STR_KOREADER_USERNAME: "Utilisateur"
|
||||
STR_KOREADER_PASSWORD: "Mot de passe"
|
||||
|
||||
@@ -91,6 +91,7 @@ STR_USERNAME: "Benutzername"
|
||||
STR_PASSWORD: "Passwort"
|
||||
STR_SYNC_SERVER_URL: "Sync-Server-URL"
|
||||
STR_DOCUMENT_MATCHING: "Dateizuordnung"
|
||||
STR_SEND_METADATA: "Metadaten senden"
|
||||
STR_AUTHENTICATE: "Authentifizieren"
|
||||
STR_KOREADER_USERNAME: "KOReader-Benutzername"
|
||||
STR_KOREADER_PASSWORD: "KOReader-Passwort"
|
||||
|
||||
@@ -95,6 +95,7 @@ STR_USERNAME: "שם משתמש"
|
||||
STR_PASSWORD: "סיסמה"
|
||||
STR_SYNC_SERVER_URL: "כתובת שרת סנכרון"
|
||||
STR_DOCUMENT_MATCHING: "התאמת מסמכים"
|
||||
STR_SEND_METADATA: "שלח מטא-נתוני מסמך"
|
||||
STR_AUTHENTICATE: "התחבר"
|
||||
STR_KOREADER_USERNAME: "שם משתמש ב-KOReader"
|
||||
STR_KOREADER_PASSWORD: "סיסמת KOReader"
|
||||
|
||||
@@ -94,6 +94,7 @@ STR_USERNAME: "Felhasználónév"
|
||||
STR_PASSWORD: "Jelszó"
|
||||
STR_SYNC_SERVER_URL: "Szinkronizálás szerver URL"
|
||||
STR_DOCUMENT_MATCHING: "Dokumentum egyeztetés"
|
||||
STR_SEND_METADATA: "Dokumentum metaadatok küldése"
|
||||
STR_AUTHENTICATE: "Hitelesítés"
|
||||
STR_KOREADER_USERNAME: "KOReader felhasználónév"
|
||||
STR_KOREADER_PASSWORD: "KOReader jelszó"
|
||||
|
||||
@@ -98,6 +98,7 @@ STR_USERNAME: "Nome utente"
|
||||
STR_PASSWORD: "Password"
|
||||
STR_SYNC_SERVER_URL: "URL server di sincronizzazione"
|
||||
STR_DOCUMENT_MATCHING: "Corrispondenza documenti"
|
||||
STR_SEND_METADATA: "Invia metadati documento"
|
||||
STR_AUTHENTICATE: "Autentica"
|
||||
STR_KOREADER_USERNAME: "Nome utente KOReader"
|
||||
STR_KOREADER_PASSWORD: "Password KOReader"
|
||||
@@ -385,4 +386,4 @@ STR_KOSYNC: "KOSync"
|
||||
STR_PWR_BTN_FOOTNOTE_BACK: "Rientro rapido dalle note"
|
||||
STR_EOB_CONTINUE_WITH: "Continua con"
|
||||
STR_EOB_HOME: "Home"
|
||||
STR_INDEX_FAILED: "Indicizzazione fallita - libro non valido"
|
||||
STR_INDEX_FAILED: "Indicizzazione fallita - libro non valido"
|
||||
|
||||
@@ -88,6 +88,7 @@ STR_USERNAME: "Пайдаланушы аты"
|
||||
STR_PASSWORD: "Құпия сөз"
|
||||
STR_SYNC_SERVER_URL: "Синхрондау сервері URL"
|
||||
STR_DOCUMENT_MATCHING: "Құжат сәйкестендіру"
|
||||
STR_SEND_METADATA: "Құжат метадеректерін жіберу"
|
||||
STR_AUTHENTICATE: "Аутентификация"
|
||||
STR_KOREADER_USERNAME: "KOReader пайдаланушы аты"
|
||||
STR_KOREADER_PASSWORD: "KOReader құпия сөзі"
|
||||
|
||||
@@ -94,6 +94,7 @@ STR_USERNAME: "Vartotojas"
|
||||
STR_PASSWORD: "Slaptažodis"
|
||||
STR_SYNC_SERVER_URL: "Serverio URL"
|
||||
STR_DOCUMENT_MATCHING: "Atpažinimas"
|
||||
STR_SEND_METADATA: "Siųsti dokumento metaduomenis"
|
||||
STR_AUTHENTICATE: "Prisijungti"
|
||||
STR_KOREADER_USERNAME: "KOReader vartotojas"
|
||||
STR_KOREADER_PASSWORD: "KOReader slaptažodis"
|
||||
|
||||
@@ -97,6 +97,7 @@ STR_USERNAME: "Użytkownik"
|
||||
STR_PASSWORD: "Hasło"
|
||||
STR_SYNC_SERVER_URL: "Serwer URL synchronizacji"
|
||||
STR_DOCUMENT_MATCHING: "Dopasowanie dokumentów"
|
||||
STR_SEND_METADATA: "Wyślij metadane dokumentu"
|
||||
STR_AUTHENTICATE: "Uwierzytelnianie"
|
||||
STR_KOREADER_USERNAME: "Użytkownik KOReader"
|
||||
STR_KOREADER_PASSWORD: "Hasło KOReader"
|
||||
|
||||
@@ -99,6 +99,7 @@ STR_USERNAME: "Nome de usuário"
|
||||
STR_PASSWORD: "Senha"
|
||||
STR_SYNC_SERVER_URL: "URL servidor sincronização"
|
||||
STR_DOCUMENT_MATCHING: "Documento correspondente"
|
||||
STR_SEND_METADATA: "Enviar metadados do doc."
|
||||
STR_AUTHENTICATE: "Autenticar"
|
||||
STR_KOREADER_USERNAME: "Usuário do KOReader"
|
||||
STR_KOREADER_PASSWORD: "Senha do KOReader"
|
||||
|
||||
@@ -97,6 +97,7 @@ STR_USERNAME: "Utilizator"
|
||||
STR_PASSWORD: "Parolă"
|
||||
STR_SYNC_SERVER_URL: "URL server sincronizare"
|
||||
STR_DOCUMENT_MATCHING: "Corespondenţă document"
|
||||
STR_SEND_METADATA: "Trimite metadate document"
|
||||
STR_AUTHENTICATE: "Autentificare"
|
||||
STR_KOREADER_USERNAME: "Nume utilizator KOReader"
|
||||
STR_KOREADER_PASSWORD: "Parolă KOReader"
|
||||
|
||||
@@ -99,6 +99,7 @@ STR_USERNAME: "Имя пользователя"
|
||||
STR_PASSWORD: "Пароль"
|
||||
STR_SYNC_SERVER_URL: "URL сервера синхронизации"
|
||||
STR_DOCUMENT_MATCHING: "Сопоставление документов"
|
||||
STR_SEND_METADATA: "Отправлять метаданные"
|
||||
STR_AUTHENTICATE: "Авторизация"
|
||||
STR_KOREADER_USERNAME: "Имя пользователя KOReader"
|
||||
STR_KOREADER_PASSWORD: "Пароль KOReader"
|
||||
|
||||
@@ -97,7 +97,8 @@ STR_CLEAR_READING_CACHE: "Vymazať vyrovnávaciu pamäť čítania"
|
||||
STR_USERNAME: "Používateľské meno"
|
||||
STR_PASSWORD: "Heslo"
|
||||
STR_SYNC_SERVER_URL: "URL synchronizačného servera"
|
||||
STR_DOCUMENT_MATCHING: "Párovanie dokumentov"
|
||||
STR_DOCUMENT_MATCHING: "Párovanie dokumentov"
|
||||
STR_SEND_METADATA: "Odosielať metadáta dokumentu"
|
||||
STR_AUTHENTICATE: "Overiť"
|
||||
STR_KOREADER_USERNAME: "Používateľské meno KOReader"
|
||||
STR_KOREADER_PASSWORD: "Heslo KOReader"
|
||||
|
||||
@@ -94,6 +94,7 @@ STR_USERNAME: "Uporabniško ime"
|
||||
STR_PASSWORD: "Geslo"
|
||||
STR_SYNC_SERVER_URL: "URL strežnika za sinhronizacijo"
|
||||
STR_DOCUMENT_MATCHING: "Ujemanje dokumentov"
|
||||
STR_SEND_METADATA: "Pošlji metapodatke dokumenta"
|
||||
STR_AUTHENTICATE: "Avtentikacija"
|
||||
STR_KOREADER_USERNAME: "KOReader uporabnik"
|
||||
STR_KOREADER_PASSWORD: "KOReader geslo"
|
||||
|
||||
@@ -104,6 +104,7 @@ STR_USERNAME: "Usuario"
|
||||
STR_PASSWORD: "Contraseña"
|
||||
STR_SYNC_SERVER_URL: "URL del servidor de sinc."
|
||||
STR_DOCUMENT_MATCHING: "Coincidencia de doc."
|
||||
STR_SEND_METADATA: "Enviar metadatos doc."
|
||||
STR_AUTHENTICATE: "Autenticar"
|
||||
STR_KOREADER_USERNAME: "Usuario de KOReader"
|
||||
STR_KOREADER_PASSWORD: "Contraseña de KOReader"
|
||||
|
||||
@@ -102,6 +102,7 @@ STR_USERNAME: "Användarnamn"
|
||||
STR_PASSWORD: "Lösenord"
|
||||
STR_SYNC_SERVER_URL: "Synkronisera serveradress"
|
||||
STR_DOCUMENT_MATCHING: "Dokumentmatchning"
|
||||
STR_SEND_METADATA: "Skicka dokumentmetadata"
|
||||
STR_AUTHENTICATE: "Autentisera "
|
||||
STR_KOREADER_USERNAME: "KOReader användarnamn"
|
||||
STR_KOREADER_PASSWORD: "KOReader lösenord"
|
||||
|
||||
@@ -92,6 +92,7 @@ STR_USERNAME: "Kullanıcı Adı"
|
||||
STR_PASSWORD: "Şifre"
|
||||
STR_SYNC_SERVER_URL: "Senkronizasyon Sunucu Adresi"
|
||||
STR_DOCUMENT_MATCHING: "Belge Eşleştirme"
|
||||
STR_SEND_METADATA: "Belge üst verisi gönder"
|
||||
STR_AUTHENTICATE: "Kimlik Doğrula"
|
||||
STR_KOREADER_USERNAME: "KOReader Kullanıcı Adı"
|
||||
STR_KOREADER_PASSWORD: "KOReader Şifresi"
|
||||
|
||||
@@ -98,6 +98,7 @@ STR_USERNAME: "Ім'я користувача"
|
||||
STR_PASSWORD: "Пароль"
|
||||
STR_SYNC_SERVER_URL: "URL для синхронізації"
|
||||
STR_DOCUMENT_MATCHING: "Порівняння документів"
|
||||
STR_SEND_METADATA: "Надсилати метадані"
|
||||
STR_AUTHENTICATE: "Автентифікувати"
|
||||
STR_KOREADER_USERNAME: "Ім'я користувача KOReader"
|
||||
STR_KOREADER_PASSWORD: "Пароль KOReader"
|
||||
|
||||
@@ -109,6 +109,7 @@ STR_USERNAME: "Nom d'usuari"
|
||||
STR_PASSWORD: "Contrasenya"
|
||||
STR_SYNC_SERVER_URL: "URL del servidor de sincronització"
|
||||
STR_DOCUMENT_MATCHING: "Coincidència de documents"
|
||||
STR_SEND_METADATA: "Envia metadades del document"
|
||||
STR_AUTHENTICATE: "Autentica"
|
||||
STR_KOREADER_USERNAME: "Nom d'usuari del KOReader"
|
||||
STR_KOREADER_PASSWORD: "Contrasenya del KOReader"
|
||||
|
||||
@@ -98,6 +98,7 @@ STR_USERNAME: "Tên đăng nhập"
|
||||
STR_PASSWORD: "Mật khẩu"
|
||||
STR_SYNC_SERVER_URL: "URL máy chủ đồng bộ"
|
||||
STR_DOCUMENT_MATCHING: "Khớp tài liệu"
|
||||
STR_SEND_METADATA: "Gửi siêu dữ liệu tài liệu"
|
||||
STR_AUTHENTICATE: "Xác thực"
|
||||
STR_KOREADER_USERNAME: "Tên đăng nhập KOReader"
|
||||
STR_KOREADER_PASSWORD: "Mật khẩu KOReader"
|
||||
|
||||
@@ -14,6 +14,7 @@ void KOReaderCredentialStore::toJson(JsonDocument& doc) const {
|
||||
doc["password_obf"] = obfuscation::obfuscateToBase64(getPassword());
|
||||
doc["serverUrl"] = getServerUrl();
|
||||
doc["matchMethod"] = static_cast<uint8_t>(getMatchMethod());
|
||||
doc["sendMetadata"] = getSendMetadata();
|
||||
}
|
||||
|
||||
bool KOReaderCredentialStore::fromJson(JsonVariantConst doc) {
|
||||
@@ -32,6 +33,7 @@ bool KOReaderCredentialStore::fromJson(JsonVariantConst doc) {
|
||||
LOG_DBG("KRS", "Invalid matchMethod %u in JSON, resetting to FILENAME", method);
|
||||
setMatchMethod(DocumentMatchMethod::FILENAME);
|
||||
}
|
||||
setSendMetadata(doc["sendMetadata"] | false);
|
||||
|
||||
if (needsResave) {
|
||||
LOG_DBG("KRS", "Resaved KOReader credentials to update format");
|
||||
@@ -98,3 +100,8 @@ void KOReaderCredentialStore::setMatchMethod(DocumentMatchMethod method) {
|
||||
matchMethod = method;
|
||||
LOG_DBG("KRS", "Set match method: %s", method == DocumentMatchMethod::FILENAME ? "Filename" : "Binary");
|
||||
}
|
||||
|
||||
void KOReaderCredentialStore::setSendMetadata(bool enabled) {
|
||||
sendMetadata = enabled;
|
||||
LOG_DBG("KRS", "Set send metadata: %s", enabled ? "true" : "false");
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ class KOReaderCredentialStore : public PersistableStore<KOReaderCredentialStore>
|
||||
std::string password;
|
||||
std::string serverUrl; // Custom sync server URL (empty = default)
|
||||
DocumentMatchMethod matchMethod = DocumentMatchMethod::FILENAME; // Default to filename for compatibility
|
||||
bool sendMetadata = false; // Send document metadata with progress sync
|
||||
|
||||
// Private constructor for singleton
|
||||
KOReaderCredentialStore() = default;
|
||||
@@ -60,6 +61,10 @@ class KOReaderCredentialStore : public PersistableStore<KOReaderCredentialStore>
|
||||
// Document matching method
|
||||
void setMatchMethod(DocumentMatchMethod method);
|
||||
DocumentMatchMethod getMatchMethod() const { return matchMethod; }
|
||||
|
||||
// Send metadata setting
|
||||
void setSendMetadata(bool enabled);
|
||||
bool getSendMetadata() const { return sendMetadata; }
|
||||
};
|
||||
|
||||
// Helper macro to access credential store
|
||||
|
||||
@@ -148,6 +148,12 @@ KOReaderSyncClient::Error KOReaderSyncClient::updateProgress(const KOReaderProgr
|
||||
// Build JSON body
|
||||
JsonDocument doc;
|
||||
doc["document"] = progress.document;
|
||||
if (progress.metadata.has_value()) {
|
||||
auto meta = doc["metadata"].to<JsonObject>();
|
||||
meta["filename"] = progress.metadata->filename;
|
||||
meta["title"] = progress.metadata->title;
|
||||
meta["authors"] = progress.metadata->authors;
|
||||
}
|
||||
doc["progress"] = progress.progress;
|
||||
doc["percentage"] = progress.percentage;
|
||||
doc["device"] = DEVICE_NAME;
|
||||
|
||||
@@ -1,16 +1,30 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
|
||||
/**
|
||||
* Optional document metadata sent alongside progress sync requests.
|
||||
* Mirrors the metadata object added in KOReader PR #15306.
|
||||
* The official sync server ignores this field; custom servers may use it.
|
||||
*/
|
||||
struct KOReaderMetadata {
|
||||
std::string filename; // e.g. "my_book.epub"
|
||||
std::string title; // Document title from EPUB metadata
|
||||
std::string authors; // Author(s) from EPUB metadata
|
||||
};
|
||||
|
||||
/**
|
||||
* Progress data from KOReader sync server.
|
||||
*/
|
||||
struct KOReaderProgress {
|
||||
std::string document; // Document hash
|
||||
std::string progress; // XPath-like progress string
|
||||
float percentage; // Progress percentage (0.0 to 1.0)
|
||||
std::string device; // Device name
|
||||
std::string deviceId; // Device ID
|
||||
int64_t timestamp; // Unix timestamp of last update
|
||||
std::string document; // Document hash
|
||||
std::string progress; // XPath-like progress string
|
||||
float percentage; // Progress percentage (0.0 to 1.0)
|
||||
std::string device; // Device name
|
||||
std::string deviceId; // Device ID
|
||||
int64_t timestamp; // Unix timestamp of last update
|
||||
std::optional<KOReaderMetadata> metadata; // Optional document metadata
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user