aboutsummaryrefslogtreecommitdiff
path: root/lib/xesite_types/src
diff options
context:
space:
mode:
Diffstat (limited to 'lib/xesite_types/src')
-rw-r--r--lib/xesite_types/src/lib.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/xesite_types/src/lib.rs b/lib/xesite_types/src/lib.rs
new file mode 100644
index 0000000..68ae4c4
--- /dev/null
+++ b/lib/xesite_types/src/lib.rs
@@ -0,0 +1,37 @@
+use serde::{Deserialize, Serialize};
+
+#[derive(Eq, PartialEq, Deserialize, Default, Debug, Serialize, Clone)]
+pub struct Frontmatter {
+ #[serde(default = "frontmatter_about")]
+ pub about: String,
+ #[serde(skip_serializing)]
+ pub title: String,
+ #[serde(skip_serializing)]
+ pub date: String,
+ #[serde(skip_serializing)]
+ pub author: Option<String>,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub series: Option<String>,
+ #[serde(skip_serializing)]
+ pub tags: Option<Vec<String>>,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub slides_link: Option<String>,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub image: Option<String>,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub thumb: Option<String>,
+ #[serde(skip_serializing)]
+ pub redirect_to: Option<String>,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub vod: Option<Vod>,
+}
+
+fn frontmatter_about() -> String {
+ "https://xeiaso.net/blog/api-jsonfeed-extensions#_xesite_frontmatter".to_string()
+}
+
+#[derive(Eq, PartialEq, Deserialize, Default, Debug, Serialize, Clone)]
+pub struct Vod {
+ pub twitch: String,
+ pub youtube: String,
+}