notion_client/endpoints/data_sources/
update.rs1pub 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}