aboutsummaryrefslogtreecommitdiffstats
path: root/src/stream/streamitem.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/stream/streamitem.rs')
-rw-r--r--src/stream/streamitem.rs46
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
+ }
+}