aboutsummaryrefslogtreecommitdiff
path: root/src/models/text.rs
diff options
context:
space:
mode:
authorGravatar Jake Swenson <jake@jakeswenson.com> 2021-05-14 07:33:45 -0700
committerGravatar Jake Swenson <jake@jakeswenson.com> 2021-05-14 07:33:45 -0700
commit8a6ee9bca902db076be12745967a69c7c184e044 (patch)
tree480244bde1110a33bf4bcd7f18b2406ff7bc8571 /src/models/text.rs
parentb22ae2cf8a9e2b6af1a54f79ecdb31ad4d2c31c5 (diff)
downloadnotion-8a6ee9bca902db076be12745967a69c7c184e044.tar.gz
notion-8a6ee9bca902db076be12745967a69c7c184e044.tar.zst
notion-8a6ee9bca902db076be12745967a69c7c184e044.zip
split models
Diffstat (limited to 'src/models/text.rs')
-rw-r--r--src/models/text.rs79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/models/text.rs b/src/models/text.rs
new file mode 100644
index 0000000..0baf183
--- /dev/null
+++ b/src/models/text.rs
@@ -0,0 +1,79 @@
+use serde::{Deserialize, Serialize};
+
+#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
+#[serde(rename_all = "snake_case")]
+pub enum TextColor {
+ Default,
+ Gray,
+ Brown,
+ Orange,
+ Yellow,
+ Green,
+ Blue,
+ Purple,
+ Pink,
+ Red,
+ GrayBackground,
+ BrownBackground,
+ OrangeBackground,
+ YellowBackground,
+ GreenBackground,
+ BlueBackground,
+ PurpleBackground,
+ PinkBackground,
+ RedBackground,
+}
+
+/// Rich text annotations
+/// See https://developers.notion.com/reference/rich-text#annotations
+#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
+struct Annotations {
+ bold: bool,
+ code: bool,
+ color: TextColor,
+ italic: bool,
+ strikethrough: bool,
+ underline: bool,
+}
+
+/// Properties common on all rich text objects
+/// See https://developers.notion.com/reference/rich-text#all-rich-text
+#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
+pub struct RichTextCommon {
+ plain_text: String,
+ href: Option<String>,
+ annotations: Annotations,
+}
+
+#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
+pub struct Link {
+ url: String,
+}
+
+#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
+pub struct Text {
+ content: String,
+ link: Option<String>,
+}
+
+#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
+#[serde(tag = "type")]
+#[serde(rename_all = "snake_case")]
+pub enum RichText {
+ /// See https://developers.notion.com/reference/rich-text#text-objects
+ Text {
+ #[serde(flatten)]
+ rich_text: RichTextCommon,
+ text: Text,
+ },
+ /// See https://developers.notion.com/reference/rich-text#mention-objects
+ Mention {
+ #[serde(flatten)]
+ rich_text: RichTextCommon,
+ },
+ /// See https://developers.notion.com/reference/rich-text#equation-objects
+ Equation {
+ #[serde(flatten)]
+ rich_text: RichTextCommon,
+ },
+}