notion_client/endpoints/users/
list.rs1use crate::{endpoints::NOTION_URI, objects::Response, NotionClientError};
2
3pub mod response;
4
5use self::response::ListAllUsersResponse;
6
7use super::UsersEndpoint;
8
9impl UsersEndpoint {
10 pub async fn list_all_users(
11 &self,
12 start_cursor: Option<&str>,
13 page_size: Option<u32>,
14 ) -> Result<ListAllUsersResponse, NotionClientError> {
15 let mut query = vec![];
16 if let Some(start_cursor) = start_cursor {
17 query.insert(0, ("start_cursor", start_cursor));
18 }
19 let page_size = page_size.map(|p| p.to_string());
20 if let Some(page_size) = &page_size {
21 query.insert(0, ("page_size", page_size));
22 }
23
24 let result = self
25 .client
26 .get(format!("{notion_uri}/users", notion_uri = NOTION_URI,))
27 .query(&query)
28 .send()
29 .await
30 .map_err(|e| NotionClientError::FailedToRequest { source: e })?;
31
32 let body = result
33 .text()
34 .await
35 .map_err(|e| NotionClientError::FailedToText { source: e })?;
36
37 let response = serde_json::from_str(&body)
38 .map_err(|e| NotionClientError::FailedToDeserialize { source: e, body })?;
39
40 match response {
41 Response::Success(r) => Ok(r),
42 Response::Error(e) => Err(NotionClientError::InvalidStatusCode { error: e }),
43 }
44 }
45}