notion_client/endpoints/users/
retrieve.rs

1use crate::{
2    endpoints::NOTION_URI,
3    objects::{user::User, Response},
4    NotionClientError,
5};
6
7use super::UsersEndpoint;
8
9impl UsersEndpoint {
10    pub async fn retrieve_a_user(&self, user_id: &str) -> Result<User, NotionClientError> {
11        let result = self
12            .client
13            .get(format!(
14                "{notion_uri}/users/{user_id}",
15                notion_uri = NOTION_URI,
16                user_id = user_id
17            ))
18            .send()
19            .await
20            .map_err(|e| NotionClientError::FailedToRequest { source: e })?;
21
22        let body = result
23            .text()
24            .await
25            .map_err(|e| NotionClientError::FailedToText { source: e })?;
26
27        let response = serde_json::from_str(&body)
28            .map_err(|e| NotionClientError::FailedToDeserialize { source: e, body })?;
29
30        match response {
31            Response::Success(r) => Ok(r),
32            Response::Error(e) => Err(NotionClientError::InvalidStatusCode { error: e }),
33        }
34    }
35
36    pub async fn retrieve_your_tokens_bot_user(&self) -> Result<User, NotionClientError> {
37        let result = self
38            .client
39            .get(format!("{notion_uri}/users/me", notion_uri = NOTION_URI,))
40            .send()
41            .await
42            .map_err(|e| NotionClientError::FailedToRequest { source: e })?;
43
44        let body = result
45            .text()
46            .await
47            .map_err(|e| NotionClientError::FailedToText { source: e })?;
48
49        let response = serde_json::from_str(&body)
50            .map_err(|e| NotionClientError::FailedToDeserialize { source: e, body })?;
51
52        match response {
53            Response::Success(r) => Ok(r),
54            Response::Error(e) => Err(NotionClientError::InvalidStatusCode { error: e }),
55        }
56    }
57}