notion_client/endpoints/search/
title.rs1pub mod request;
2pub mod response;
3
4use crate::{endpoints::NOTION_URI, objects::Response, NotionClientError};
5
6use self::{request::SearchByTitleRequest, response::SearchByTitleResponse};
7
8use super::SearchEndpoint;
9
10impl SearchEndpoint {
11 pub async fn search_by_title(
12 &self,
13 request: SearchByTitleRequest,
14 ) -> Result<SearchByTitleResponse, NotionClientError> {
15 let json = serde_json::to_string(&request)
16 .map_err(|e| NotionClientError::FailedToSerialize { source: e })?;
17
18 let result = self
19 .client
20 .post(format!("{notion_uri}/search", notion_uri = NOTION_URI))
21 .body(json)
22 .send()
23 .await
24 .map_err(|e| NotionClientError::FailedToRequest { source: e })?;
25
26 let body = result
27 .text()
28 .await
29 .map_err(|e| NotionClientError::FailedToText { source: e })?;
30
31 let response = serde_json::from_str(&body)
32 .map_err(|e| NotionClientError::FailedToDeserialize { source: e, body })?;
33
34 match response {
35 Response::Success(r) => Ok(r),
36 Response::Error(e) => Err(NotionClientError::InvalidStatusCode { error: e }),
37 }
38 }
39}