diff options
Diffstat (limited to 'lib/xesite_types/src')
| -rw-r--r-- | lib/xesite_types/src/lib.rs | 37 |
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, +} |
