nextcloud_news_api/models/
item.rs

1use 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}