tencentcloud_sms/api/sign/describe_sms_sign_list/
request.rs1use super::response::{DescribeSignStatus, DescribeSmsSignListResponse, 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 DescribeSmsSignListRequest {
12 #[validate(length(min = 1, max = 10, message = "签名ID数组必须在1-10之间"))]
13 #[builder(setter(transform = |ids: Vec<u64>| ids))]
14 sign_id_set: Vec<u64>,
15
16 #[validate(range(max = 1, message = "国际类型必须为0或1"))]
17 international: u8,
18}
19
20impl ApiRequest for DescribeSmsSignListRequest {
21 type Response = DescribeSmsSignListResponse;
22 type Output = Vec<DescribeSignStatus>;
23
24 const ACTION: &'static str = "DescribeSmsSignList";
25
26 fn parse_response(response_text: &str) -> SmsResult<Self::Response> {
27 serde_json::from_str(response_text).map_err(Into::into)
28 }
29
30 fn handle_response(response: Self::Response) -> SmsResult<Self::Output> {
31 match response.response {
32 ResponseBody::Success(success) => {
33 debug!("API 返回成功响应,request_id: {}", success.request_id);
34 info!(
35 "查询到 {} 个签名",
36 success.describe_sign_list_status_set.len()
37 );
38 Ok(success.describe_sign_list_status_set)
39 }
40 ResponseBody::Error(api_error) => {
41 error!(
42 "API 返回错误响应,request_id: {}, 错误码: {}",
43 api_error.request_id, api_error.error.code
44 );
45 Err(crate::api::common::classify_error(
46 &api_error.error.code,
47 &api_error.error.message,
48 api_error.request_id,
49 ))
50 }
51 }
52 }
53}