open_lark/service/cloud_docs/wiki/v2/space_node/
update_title.rs1use reqwest::Method;
2use serde::{Deserialize, Serialize};
3
4use crate::core::{
5 api_req::ApiRequest,
6 api_resp::{ApiResponseTrait, BaseResponse, ResponseFormat},
7 config::Config,
8 constants::AccessTokenType,
9 http::Transport,
10 req_option::RequestOption,
11 SDKResult,
12};
13
14#[derive(Debug, Serialize, Default)]
16pub struct UpdateSpaceNodeTitleRequest {
17 #[serde(skip)]
18 api_request: ApiRequest,
19 #[serde(skip)]
21 space_id: String,
22 #[serde(skip)]
24 node_token: String,
25 title: String,
27}
28
29impl UpdateSpaceNodeTitleRequest {
30 pub fn builder() -> UpdateSpaceNodeTitleRequestBuilder {
31 UpdateSpaceNodeTitleRequestBuilder::default()
32 }
33
34 pub fn new(space_id: impl ToString, node_token: impl ToString, title: impl ToString) -> Self {
35 Self {
36 space_id: space_id.to_string(),
37 node_token: node_token.to_string(),
38 title: title.to_string(),
39 ..Default::default()
40 }
41 }
42}
43
44#[derive(Default)]
45pub struct UpdateSpaceNodeTitleRequestBuilder {
46 request: UpdateSpaceNodeTitleRequest,
47}
48
49impl UpdateSpaceNodeTitleRequestBuilder {
50 pub fn space_id(mut self, space_id: impl ToString) -> Self {
52 self.request.space_id = space_id.to_string();
53 self
54 }
55
56 pub fn node_token(mut self, node_token: impl ToString) -> Self {
58 self.request.node_token = node_token.to_string();
59 self
60 }
61
62 pub fn title(mut self, title: impl ToString) -> Self {
64 self.request.title = title.to_string();
65 self
66 }
67
68 pub fn build(mut self) -> UpdateSpaceNodeTitleRequest {
69 self.request.api_request.body = serde_json::to_vec(&self.request).unwrap();
70 self.request
71 }
72}
73
74#[derive(Debug, Deserialize)]
76pub struct UpdatedNode {
77 pub space_id: String,
79 pub node_token: String,
81 pub obj_type: String,
83 pub parent_node_token: Option<String>,
85 pub node_type: Option<String>,
87 pub obj_token: Option<String>,
89 pub title: Option<String>,
91}
92
93#[derive(Debug, Deserialize)]
95pub struct UpdateSpaceNodeTitleResponse {
96 pub node: UpdatedNode,
98}
99
100impl ApiResponseTrait for UpdateSpaceNodeTitleResponse {
101 fn data_format() -> ResponseFormat {
102 ResponseFormat::Data
103 }
104}
105
106pub async fn update_space_node_title(
108 request: UpdateSpaceNodeTitleRequest,
109 config: &Config,
110 option: Option<RequestOption>,
111) -> SDKResult<BaseResponse<UpdateSpaceNodeTitleResponse>> {
112 let mut api_req = request.api_request;
113 api_req.http_method = Method::PUT;
114 api_req.api_path = format!(
115 "/open-apis/wiki/v2/spaces/{}/nodes/{}/update_title",
116 request.space_id, request.node_token
117 );
118 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
119
120 let api_resp = Transport::request(api_req, config, option).await?;
121 Ok(api_resp)
122}
123
124#[cfg(test)]
125mod tests {
126 use super::*;
127
128 #[test]
129 fn test_update_space_node_title_request_builder() {
130 let request = UpdateSpaceNodeTitleRequest::builder()
131 .space_id("spcxxxxxx")
132 .node_token("wikcnxxxxxx")
133 .title("新的文档标题")
134 .build();
135
136 assert_eq!(request.space_id, "spcxxxxxx");
137 assert_eq!(request.node_token, "wikcnxxxxxx");
138 assert_eq!(request.title, "新的文档标题");
139 }
140}