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 endpoints::{cloud_docs::*, EndpointBuilder},
10 http::Transport,
11 req_option::RequestOption,
12 SDKResult,
13};
14
15#[derive(Debug, Serialize, Default)]
17pub struct UpdateSpaceNodeTitleRequest {
18 #[serde(skip)]
19 api_request: ApiRequest,
20 #[serde(skip)]
22 space_id: String,
23 #[serde(skip)]
25 node_token: String,
26 title: String,
28}
29
30impl UpdateSpaceNodeTitleRequest {
31 pub fn builder() -> UpdateSpaceNodeTitleRequestBuilder {
32 UpdateSpaceNodeTitleRequestBuilder::default()
33 }
34
35 pub fn new(space_id: impl ToString, node_token: impl ToString, title: impl ToString) -> Self {
36 Self {
37 space_id: space_id.to_string(),
38 node_token: node_token.to_string(),
39 title: title.to_string(),
40 ..Default::default()
41 }
42 }
43}
44
45#[derive(Default)]
46pub struct UpdateSpaceNodeTitleRequestBuilder {
47 request: UpdateSpaceNodeTitleRequest,
48}
49
50impl UpdateSpaceNodeTitleRequestBuilder {
51 pub fn space_id(mut self, space_id: impl ToString) -> Self {
53 self.request.space_id = space_id.to_string();
54 self
55 }
56
57 pub fn node_token(mut self, node_token: impl ToString) -> Self {
59 self.request.node_token = node_token.to_string();
60 self
61 }
62
63 pub fn title(mut self, title: impl ToString) -> Self {
65 self.request.title = title.to_string();
66 self
67 }
68
69 pub fn build(mut self) -> UpdateSpaceNodeTitleRequest {
70 self.request.api_request.body = serde_json::to_vec(&self.request).unwrap();
71 self.request
72 }
73}
74
75#[derive(Debug, Deserialize)]
77pub struct UpdatedNode {
78 pub space_id: String,
80 pub node_token: String,
82 pub obj_type: String,
84 pub parent_node_token: Option<String>,
86 pub node_type: Option<String>,
88 pub obj_token: Option<String>,
90 pub title: Option<String>,
92}
93
94#[derive(Debug, Deserialize)]
96pub struct UpdateSpaceNodeTitleResponse {
97 pub node: UpdatedNode,
99}
100
101impl ApiResponseTrait for UpdateSpaceNodeTitleResponse {
102 fn data_format() -> ResponseFormat {
103 ResponseFormat::Data
104 }
105}
106
107pub async fn update_space_node_title(
109 request: UpdateSpaceNodeTitleRequest,
110 config: &Config,
111 option: Option<RequestOption>,
112) -> SDKResult<BaseResponse<UpdateSpaceNodeTitleResponse>> {
113 let mut api_req = request.api_request;
114 api_req.http_method = Method::PUT;
115 api_req.api_path = {
116 let mut path = EndpointBuilder::replace_param(
117 WIKI_V2_SPACE_NODE_UPDATE_TITLE,
118 "space_id",
119 &request.space_id,
120 );
121 path = EndpointBuilder::replace_param(&path, "node_token", &request.node_token);
122 path
123 };
124 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
125
126 let api_resp = Transport::request(api_req, config, option).await?;
127 Ok(api_resp)
128}
129
130#[cfg(test)]
131#[allow(unused_variables, unused_unsafe)]
132mod tests {
133 use super::*;
134
135 #[test]
136 fn test_update_space_node_title_request_builder() {
137 let request = UpdateSpaceNodeTitleRequest::builder()
138 .space_id("spcxxxxxx")
139 .node_token("wikcnxxxxxx")
140 .title("新的文档标题")
141 .build();
142
143 assert_eq!(request.space_id, "spcxxxxxx");
144 assert_eq!(request.node_token, "wikcnxxxxxx");
145 assert_eq!(request.title, "新的文档标题");
146 }
147}