Koreader Progress Sync (#3823)

Co-authored-by: Joseph Milazzo <josephmajora@gmail.com>
This commit is contained in:
Tyler Kenney 2025-06-20 13:45:56 -04:00 committed by GitHub
parent b6d004614a
commit 3107ca73e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 4165 additions and 0 deletions

View file

@ -0,0 +1,33 @@
using API.DTOs.Progress;
namespace API.DTOs.Koreader;
/// <summary>
/// This is the interface for receiving and sending updates to Koreader. The only fields
/// that are actually used are the Document and Progress fields.
/// </summary>
public class KoreaderBookDto
{
/// <summary>
/// This is the Koreader hash of the book. It is used to identify the book.
/// </summary>
public string Document { get; set; }
/// <summary>
/// A randomly generated id from the koreader device. Only used to maintain the Koreader interface.
/// </summary>
public string Device_id { get; set; }
/// <summary>
/// The Koreader device name. Only used to maintain the Koreader interface.
/// </summary>
public string Device { get; set; }
/// <summary>
/// Percent progress of the book. Only used to maintain the Koreader interface.
/// </summary>
public float Percentage { get; set; }
/// <summary>
/// An XPath string read by Koreader to determine the location within the epub.
/// Essentially, it is Koreader's equivalent to ProgressDto.BookScrollId.
/// </summary>
/// <seealso cref="ProgressDto.BookScrollId"/>
public string Progress { get; set; }
}

View file

@ -0,0 +1,15 @@
using System;
namespace API.DTOs.Koreader;
public class KoreaderProgressUpdateDto
{
/// <summary>
/// This is the Koreader hash of the book. It is used to identify the book.
/// </summary>
public string Document { get; set; }
/// <summary>
/// UTC Timestamp to return to KOReader
/// </summary>
public DateTime Timestamp { get; set; }
}