open_lark/service/cloud_docs/sheets/v3/spreadsheet_sheet/
get.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{
4    core::{
5        api_req::ApiRequest,
6        api_resp::{ApiResponseTrait, BaseResponse, ResponseFormat},
7        constants::AccessTokenType,
8        endpoints::cloud_docs::*,
9        req_option, SDKResult,
10    },
11    service::sheets::v3::{spreadsheet_sheet::Sheet, SpreadsheetSheetService},
12};
13
14#[derive(Serialize, Deserialize, Debug, Default)]
15pub struct GetSpreadsheetSheetRequest {
16    #[serde(skip)]
17    api_request: ApiRequest,
18    #[serde(skip)]
19    spreadsheet_token: String,
20    #[serde(skip)]
21    sheet_id: String,
22}
23
24impl GetSpreadsheetSheetRequest {
25    pub fn builder() -> GetSpreadsheetSheetRequestBuilder {
26        GetSpreadsheetSheetRequestBuilder::default()
27    }
28}
29
30#[derive(Default)]
31pub struct GetSpreadsheetSheetRequestBuilder {
32    request: GetSpreadsheetSheetRequest,
33}
34
35impl GetSpreadsheetSheetRequestBuilder {
36    pub fn spreadsheet_token(mut self, spreadsheet_token: impl ToString) -> Self {
37        self.request.spreadsheet_token = spreadsheet_token.to_string();
38        self
39    }
40
41    pub fn sheet_id(mut self, sheet_id: impl ToString) -> Self {
42        self.request.sheet_id = sheet_id.to_string();
43        self
44    }
45
46    pub fn build(mut self) -> GetSpreadsheetSheetRequest {
47        self.request.api_request.body = serde_json::to_vec(&self.request).unwrap();
48        self.request
49    }
50}
51
52impl SpreadsheetSheetService {
53    /// 获取工作表
54    /// 根据电子表格 token 和工作表 ID 获取工作表信息,包括工作表 ID、标题、索引位置、是否被隐藏等。
55    pub async fn get(
56        &self,
57        request: GetSpreadsheetSheetRequest,
58        option: Option<req_option::RequestOption>,
59    ) -> SDKResult<BaseResponse<GetSpreadsheetSheetResponse>> {
60        let mut api_req = request.api_request;
61        api_req.api_path = SHEETS_V3_SPREADSHEET_SHEET_GET
62            .replace("{}", &request.spreadsheet_token)
63            .replace("{}", &request.sheet_id);
64        api_req.http_method = reqwest::Method::GET;
65        api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
66
67        let api_resp = crate::core::http::Transport::request(api_req, &self.config, option).await?;
68
69        Ok(api_resp)
70    }
71}
72
73#[derive(Deserialize, Debug)]
74pub struct GetSpreadsheetSheetResponse {
75    pub sheet: Sheet,
76}
77
78impl ApiResponseTrait for GetSpreadsheetSheetResponse {
79    fn data_format() -> ResponseFormat {
80        ResponseFormat::Data
81    }
82}