diff options
Diffstat (limited to 'src/stream/streamitem.rs')
-rw-r--r-- | src/stream/streamitem.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/stream/streamitem.rs b/src/stream/streamitem.rs new file mode 100644 index 0000000..343ed28 --- /dev/null +++ b/src/stream/streamitem.rs @@ -0,0 +1,46 @@ +/** + * Representation of a stream item, as received from the zot api streams. + * + * SPDX-FileCopyrightText: 2023 Eilertsens Kodeknekkeri + * SPDX-FileCopyrightText: 2023 Harald Eilertsen <haraldei@anduin.net> + * + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +use super::verb::Verb; + +use serde::Deserialize; + +#[derive(Debug, Deserialize, PartialEq)] +pub enum StreamItemType { + #[serde(rename="activity")] + Activity, +} + +#[derive(Debug, Deserialize, PartialEq)] +pub enum StreamItemEncoding { + #[serde(rename="zot")] + Zot, +} + +/** + * Represents an item as returned by the stream API's. + */ +#[derive(Debug, Deserialize, PartialEq)] +pub struct StreamItem { + #[serde(rename="type")] + pub item_type: StreamItemType, + pub encoding: StreamItemEncoding, + + pub verb: Verb, + + pub title: String, + pub summary: String, + pub body: String, +} + +impl StreamItem { + pub fn is_post(&self) -> bool { + self.verb == Verb::Post + } +} |