open_lark/service/cloud_docs/bitable/v1/app/
get.rs1use reqwest::Method;
2use serde::Deserialize;
3
4use crate::{
5 core::{
6 api_req::ApiRequest,
7 api_resp::{ApiResponseTrait, BaseResponse, ResponseFormat},
8 constants::AccessTokenType,
9 http::Transport,
10 req_option::RequestOption,
11 SDKResult,
12 },
13 impl_executable_builder_owned,
14};
15
16use super::AppService;
17
18impl AppService {
19 pub async fn get(
23 &self,
24 request: GetAppRequest,
25 option: Option<RequestOption>,
26 ) -> SDKResult<BaseResponse<GetAppResponse>> {
27 let mut api_req = request.api_request;
28 api_req.http_method = Method::GET;
29 api_req.api_path = format!("/open-apis/bitable/v1/apps/{}", request.app_token);
30 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
31
32 let api_resp = Transport::request(api_req, &self.config, option).await?;
33 Ok(api_resp)
34 }
35}
36
37#[derive(Debug, Default)]
39pub struct GetAppRequest {
40 api_request: ApiRequest,
41 app_token: String,
43}
44
45impl GetAppRequest {
46 pub fn builder() -> GetAppRequestBuilder {
47 GetAppRequestBuilder::default()
48 }
49
50 pub fn new(app_token: impl ToString) -> Self {
52 Self {
53 api_request: ApiRequest::default(),
54 app_token: app_token.to_string(),
55 }
56 }
57}
58
59#[derive(Default)]
60pub struct GetAppRequestBuilder {
61 request: GetAppRequest,
62}
63
64impl GetAppRequestBuilder {
65 pub fn app_token(mut self, app_token: impl ToString) -> Self {
67 self.request.app_token = app_token.to_string();
68 self
69 }
70
71 pub fn build(self) -> GetAppRequest {
72 self.request
73 }
74}
75
76impl_executable_builder_owned!(
77 GetAppRequestBuilder,
78 AppService,
79 GetAppRequest,
80 BaseResponse<GetAppResponse>,
81 get
82);
83
84#[derive(Deserialize, Debug)]
85pub struct GetAppResponse {
86 pub app: GetAppResponseData,
88}
89
90#[derive(Deserialize, Debug)]
91pub struct GetAppResponseData {
92 pub app_token: String,
94 pub name: String,
96 pub revision: i32,
99 pub is_advanced: bool,
104 pub time_zone: String,
106}
107
108impl ApiResponseTrait for GetAppResponse {
109 fn data_format() -> ResponseFormat {
110 ResponseFormat::Data
111 }
112}
113
114#[cfg(test)]
115mod tests {
116 use super::*;
117
118 #[test]
119 fn test_get_app_request() {
120 let request = GetAppRequest::builder()
121 .app_token("bascnmBA*****yGehy8")
122 .build();
123
124 assert_eq!(request.app_token, "bascnmBA*****yGehy8");
125 }
126
127 #[test]
128 fn test_get_app_request_new() {
129 let request = GetAppRequest::new("bascnmBA*****yGehy8");
130 assert_eq!(request.app_token, "bascnmBA*****yGehy8");
131 }
132}