Skip to main content

notion_client/endpoints/data_sources/
create.rs

1pub 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}