open_lark/service/cloud_docs/sheets/v3/spreadsheet_sheet/
query.rs1use 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::RequestOption,
10 SDKResult,
11 },
12 service::sheets::v3::{spreadsheet_sheet::Sheet, SpreadsheetSheetService},
13};
14
15#[derive(Serialize, Deserialize, Debug, Default)]
17pub struct QuerySpreadsheetSheetRequest {
18 #[serde(skip)]
19 api_request: ApiRequest,
20 #[serde(skip)]
21 spreadsheet_token: String,
22}
23
24impl SpreadsheetSheetService {
25 pub async fn query(
29 &self,
30 request: QuerySpreadsheetSheetRequest,
31 option: Option<RequestOption>,
32 ) -> SDKResult<BaseResponse<QuerySpreadsheetSheetResponse>> {
33 let mut api_req = request.api_request;
34 api_req.api_path =
35 SHEETS_V3_SPREADSHEET_SHEETS_QUERY.replace("{}", &request.spreadsheet_token);
36 api_req.http_method = reqwest::Method::GET;
37 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
38
39 let api_resp = crate::core::http::Transport::request(api_req, &self.config, option).await?;
40
41 Ok(api_resp)
42 }
43}
44
45impl QuerySpreadsheetSheetRequest {
46 pub fn builder() -> QuerySpreadsheetSheetRequestBuilder {
47 QuerySpreadsheetSheetRequestBuilder::default()
48 }
49}
50
51#[derive(Default)]
52pub struct QuerySpreadsheetSheetRequestBuilder {
53 request: QuerySpreadsheetSheetRequest,
54}
55
56impl QuerySpreadsheetSheetRequestBuilder {
57 pub fn spreadsheet_token(mut self, spreadsheet_token: impl ToString) -> Self {
59 self.request.spreadsheet_token = spreadsheet_token.to_string();
60 self
61 }
62
63 pub fn build(mut self) -> QuerySpreadsheetSheetRequest {
64 self.request.api_request.body = serde_json::to_vec(&self.request).unwrap();
65 self.request
66 }
67}
68
69#[derive(Deserialize, Debug)]
70pub struct QuerySpreadsheetSheetResponse {
71 pub sheets: Vec<Sheet>,
72}
73
74impl ApiResponseTrait for QuerySpreadsheetSheetResponse {
75 fn data_format() -> ResponseFormat {
76 ResponseFormat::Data
77 }
78}