aboutsummaryrefslogtreecommitdiff
path: root/src/models.rs
diff options
context:
space:
mode:
authorA Farzat <a@farzat.xyz>2026-03-02 13:24:38 +0300
committerA Farzat <a@farzat.xyz>2026-03-02 13:24:38 +0300
commit10f1db4541e40ef776e41f572ff07a5ed64205ca (patch)
tree38b4436d5f1fe641f52218959b5cf895e2f1a1c9 /src/models.rs
parent98532dc37ae9f72e8970d8d67e6bab9545596650 (diff)
downloadoreilly-epub-10f1db4541e40ef776e41f572ff07a5ed64205ca.tar.gz
oreilly-epub-10f1db4541e40ef776e41f572ff07a5ed64205ca.zip
Add file and chapter details fetching
Fetching file details allows us to download them to the correct location later. Chapter details are currently limited to is_skippable, which might be used to determine whether to make the corresponding spine item non-linear. Other details such as the title shall be fetched from the spine and table-of-contents endpoints later.
Diffstat (limited to 'src/models.rs')
-rw-r--r--src/models.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/models.rs b/src/models.rs
index 77afeb2..174b983 100644
--- a/src/models.rs
+++ b/src/models.rs
@@ -23,3 +23,30 @@ pub struct EpubResponse {
pub chapters: String, // This is a URL to the chapters list
pub files: String, // This is a URL to the resource files
}
+
+// --- Generic Model for paginated API ---
+
+#[derive(Debug, serde::Deserialize)]
+pub struct Paginated<T> {
+ pub next: Option<String>,
+ pub results: Vec<T>,
+}
+
+/// Model for chapters API.
+#[derive(Debug, Deserialize)]
+pub struct Chapter {
+ pub ourn: String,
+ pub is_skippable: bool,
+}
+
+/// Model for files API.
+#[derive(Debug, Deserialize)]
+pub struct FileEntry {
+ pub ourn: String,
+ pub url: String,
+ pub full_path: String,
+ pub media_type: String,
+ pub filename: String,
+ pub filename_ext: String,
+ pub kind: String,
+}