notion_client/endpoints/users/
retrieve.rs1use 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}