notion_client/endpoints/data_sources/
create.rs1pub mod request;
2
3use crate::{
4 endpoints::{parse_response, NOTION_URI},
5 objects::data_source::DataSource,
6 NotionClientError,
7};
8
9use self::request::CreateADataSourceRequest;
10
11use super::DataSourcesEndpoint;
12
13impl DataSourcesEndpoint {
14 pub async fn create_a_data_source(
15 &self,
16 request: CreateADataSourceRequest,
17 ) -> Result<DataSource, NotionClientError> {
18 let json = serde_json::to_string(&request)
19 .map_err(|e| NotionClientError::FailedToSerialize { source: e })?;
20
21 let result = self
22 .client
23 .post(format!(
24 "{notion_uri}/data_sources",
25 notion_uri = NOTION_URI
26 ))
27 .body(json)
28 .send()
29 .await
30 .map_err(|e| NotionClientError::FailedToRequest { source: e })?;
31
32 let status = result.status();
33 let body = result
34 .text()
35 .await
36 .map_err(|e| NotionClientError::FailedToText { source: e })?;
37
38 parse_response(status, body)
39 }
40}