Skip to main content

notion_client/endpoints/data_sources/
update.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::UpdateADataSourceRequest;
10
11use super::DataSourcesEndpoint;
12
13impl DataSourcesEndpoint {
14    pub async fn update_a_data_source(
15        &self,
16        data_source_id: &str,
17        request: UpdateADataSourceRequest,
18    ) -> Result<DataSource, NotionClientError> {
19        let json = serde_json::to_string(&request)
20            .map_err(|e| NotionClientError::FailedToSerialize { source: e })?;
21
22        let result = self
23            .client
24            .patch(format!(
25                "{notion_uri}/data_sources/{data_source_id}",
26                notion_uri = NOTION_URI,
27                data_source_id = data_source_id
28            ))
29            .body(json)
30            .send()
31            .await
32            .map_err(|e| NotionClientError::FailedToRequest { source: e })?;
33
34        let status = result.status();
35        let body = result
36            .text()
37            .await
38            .map_err(|e| NotionClientError::FailedToText { source: e })?;
39
40        parse_response(status, body)
41    }
42}