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