tencentcloud_sms/api/sign/delete_sms_sign/
request.rs

1use super::response::{DeleteSignStatus, DeleteSmsSignResponse, 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 DeleteSmsSignRequest {
12    #[validate(range(min = 1, message = "SignId必须大于0"))]
13    sign_id: u64,
14}
15
16impl ApiRequest for DeleteSmsSignRequest {
17    type Response = DeleteSmsSignResponse;
18    type Output = DeleteSignStatus;
19
20    const ACTION: &'static str = "DeleteSmsSign";
21
22    fn parse_response(response_text: &str) -> SmsResult<Self::Response> {
23        serde_json::from_str(response_text).map_err(Into::into)
24    }
25
26    fn handle_response(response: Self::Response) -> SmsResult<Self::Output> {
27        match response.response {
28            ResponseBody::Success(success) => {
29                debug!("API 返回成功响应,request_id: {}", success.request_id);
30                info!(
31                    "签名删除成功,状态: {}",
32                    success.delete_sign_status.delete_status
33                );
34                Ok(success.delete_sign_status)
35            }
36            ResponseBody::Error(api_error) => {
37                error!(
38                    "API 返回错误响应,request_id: {}, 错误码: {}",
39                    api_error.request_id, api_error.error.code
40                );
41                Err(crate::api::common::classify_error(
42                    &api_error.error.code,
43                    &api_error.error.message,
44                    api_error.request_id,
45                ))
46            }
47        }
48    }
49}