From aefe435643c340f922b1ce1653bc48701f7a6e60 Mon Sep 17 00:00:00 2001 From: Brett Spradling Date: Sun, 16 May 2021 07:54:31 -0700 Subject: [PATCH] generic block --- src/lib.rs | 4 ++-- src/models.rs | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index db67c37..8a92d3d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -101,14 +101,14 @@ impl NotionApi { .await?) } - pub async fn get_block_children( + pub async fn get_block_children>( &self, block_id: T ) -> Result, NotionApiClientError> { Ok(NotionApi::make_json_request( self.client.get(&format!( "https://api.notion.com/v1/blocks/{block_id}/children", - block_id = block_id.id(). + block_id = block_id.id().id() )) ).await?) } diff --git a/src/models.rs b/src/models.rs index d6dc86a..45c5489 100644 --- a/src/models.rs +++ b/src/models.rs @@ -165,17 +165,37 @@ impl Display for BlockId { } } +#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Clone)] +#[serde(rename_all = "snake_case")] +pub enum BlockType { + Paragraph, + Heading1, + Heading2, + Heading3, + BulletedListItem, + NumberedListItem, + ToDo, + Toggle, + ChildPage, + Unsupported +} + #[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Clone)] pub struct Block { id: BlockId, + r#type: BlockType, created_time: DateTime, last_edited_time: DateTime, has_children: bool, } -#[derive(Serialize, Deserialize, Clone)] +#[derive(Eq, Serialize, Deserialize, Clone, Debug, PartialEq)] #[serde(tag = "object")] pub enum Object { + Block { + #[serde(flatten)] + block: Block + }, Database { #[serde(flatten)] database: Database,