From f7ef8d6d7f009990ba0c6be61cca507f097673b6 Mon Sep 17 00:00:00 2001 From: Jake Swenson Date: Fri, 14 May 2021 07:18:20 -0700 Subject: First pass at a working Notion api client from the public beta --- src/lib.rs | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/lib.rs (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..7a65f31 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,70 @@ +use crate::models::{Database, ListResponse}; +use std::collections::HashMap; +use crate::models::search::SearchRequest; + +mod models; + +struct NotionApi { + token: String +} + +impl NotionApi { + /// This method is apparently deprecated + pub async fn list_databases(&self) -> Result, Box> { + let client = reqwest::ClientBuilder::new().build()?; + let json = client.get("https://api.notion.com/v1/databases") + .bearer_auth(self.token.clone()) + .send() + .await? + .text().await?; + dbg!(&json); + let result = serde_json::from_str(&json)?; + + Ok(result) + } + + + pub async fn search>(&self, query: T) -> Result, Box> { + let client = reqwest::ClientBuilder::new().build()?; + let json = client.post("https://api.notion.com/v1/search") + .bearer_auth(self.token.clone()) + .json(&query.into()) + .send() + .await? + .text().await?; + + dbg!(serde_json::from_str::(&json)?); + let result = serde_json::from_str(&json)?; + + Ok(result) + } +} + +#[cfg(test)] +mod tests { + use crate::NotionApi; + use crate::models::search::{NotionSearch, FilterValue, FilterProperty}; + const TEST_TOKEN: &'static str = include_str!(".api_token"); + + #[tokio::test] + async fn list_databases() -> Result<(), Box> { + let api = NotionApi { + token: TEST_TOKEN.to_string() + }; + + dbg!(api.list_databases().await?); + + Ok(()) + } + + #[tokio::test] + async fn search() -> Result<(), Box> { + let api = NotionApi { + token: TEST_TOKEN.to_string() + }; + + dbg!(api.search(NotionSearch::Filter {value: FilterValue::Database, property: FilterProperty::Object}).await?); + + Ok(()) + } +} -- cgit v1.2.3