nextcloud_news_api/models/
item.rs1use super::ItemType;
2use crate::{FeedID, ItemID};
3use serde_derive::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Deserialize)]
6pub struct Item {
7 pub id: ItemID,
8 pub guid: String,
9 #[serde(rename = "guidHash")]
10 pub guid_hash: String,
11 #[serde(default)]
12 pub url: Option<String>,
13 #[serde(default)]
14 pub title: Option<String>,
15 pub author: Option<String>,
16 #[serde(rename = "pubDate")]
17 pub pub_date: i64,
18 pub body: String,
19 #[serde(default)]
20 #[serde(rename = "enclosureMime")]
21 pub enclosure_mime: Option<String>,
22 #[serde(default)]
23 #[serde(rename = "enclosureLink")]
24 pub enclosure_link: Option<String>,
25 #[serde(default)]
26 #[serde(rename = "mediaThumbnail")]
27 pub media_thumbnail: Option<String>,
28 #[serde(default)]
29 #[serde(rename = "mediaDescription")]
30 pub media_description: Option<String>,
31 #[serde(rename = "feedId")]
32 pub feed_id: FeedID,
33 pub unread: bool,
34 pub starred: bool,
35 pub rtl: bool,
36 #[serde(rename = "lastModified")]
37 pub last_modified: i64,
38 pub fingerprint: String,
39}
40
41#[derive(Debug, Serialize)]
42pub struct ItemQueryInput {
43 #[serde(rename = "batchSize")]
44 pub batch_size: i64,
45 #[serde(default)]
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub offset: Option<u64>,
48 #[serde(rename = "type")]
49 #[serde(default)]
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub item_type: Option<ItemType>,
52 #[serde(default)]
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub id: Option<u64>,
55 #[serde(default)]
56 #[serde(skip_serializing_if = "Option::is_none")]
57 #[serde(rename = "getRead")]
58 pub get_read: Option<bool>,
59 #[serde(default)]
60 #[serde(skip_serializing_if = "Option::is_none")]
61 #[serde(rename = "oldestFirst")]
62 pub oldest_first: Option<bool>,
63}
64
65#[derive(Debug, Serialize)]
66pub struct ItemUpdatedQueryInput {
67 #[serde(rename = "lastModified")]
68 pub last_modified: u64,
69 #[serde(rename = "type")]
70 #[serde(default)]
71 #[serde(skip_serializing_if = "Option::is_none")]
72 pub item_type: Option<ItemType>,
73 #[serde(default)]
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub id: Option<u64>,
76}
77
78#[derive(Debug, Serialize)]
79pub struct ItemMarkInput {
80 #[serde(rename = "itemIds")]
81 pub item_ids: Vec<ItemID>,
82}
83
84#[derive(Debug, Serialize)]
85pub struct ItemMarkAllInput {
86 #[serde(rename = "newestItemId")]
87 pub newest_item_id: ItemID,
88}
89
90#[derive(Clone, Debug, Deserialize)]
91pub struct ItemsResponse {
92 pub items: Vec<Item>,
93}