tencentcloud_sms/api/template/describe_sms_template_list/
request.rs

1use super::response::{DescribeSmsTemplateListResponse, DescribeTemplateStatus, ResponseBody};
2use crate::SmsResult;
3use crate::api::common::ApiRequest;
4use crate::logging::{debug, error, info};
5use serde::Serialize;
6use typed_builder::TypedBuilder;
7use validator::Validate;
8
9#[derive(Debug, Clone, Serialize, TypedBuilder, Validate)]
10#[serde(rename_all = "PascalCase")]
11pub struct DescribeSmsTemplateListRequest {
12    #[validate(length(min = 1, max = 10, message = "模板ID数组必须在1-10之间"))]
13    #[builder(setter(transform = |ids: Vec<u64>| ids))]
14    template_id_set: Vec<u64>,
15
16    #[validate(range(max = 1, message = "国际类型必须为0或1"))]
17    international: u8,
18}
19
20impl ApiRequest for DescribeSmsTemplateListRequest {
21    type Response = DescribeSmsTemplateListResponse;
22    type Output = Vec<DescribeTemplateStatus>;
23    const ACTION: &'static str = "DescribeSmsTemplateList";
24
25    fn parse_response(response_text: &str) -> SmsResult<Self::Response> {
26        serde_json::from_str(response_text).map_err(Into::into)
27    }
28
29    fn handle_response(response: Self::Response) -> SmsResult<Self::Output> {
30        match response.response {
31            ResponseBody::Success(success) => {
32                debug!("API 返回成功响应,request_id: {}", success.request_id);
33                info!(
34                    "查询到 {} 个模板",
35                    success.describe_template_status_set.len()
36                );
37                Ok(success.describe_template_status_set)
38            }
39            ResponseBody::Error(api_error) => {
40                error!(
41                    "API 返回错误响应,request_id: {}, 错误码: {}",
42                    api_error.request_id, api_error.error.code
43                );
44                Err(crate::api::common::classify_error(
45                    &api_error.error.code,
46                    &api_error.error.message,
47                    api_error.request_id,
48                ))
49            }
50        }
51    }
52}