tencentcloud_sms/api/sign/modify_sms_sign/
request.rs1use super::response::{ModifySignStatus, ModifySmsSignResponse, 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 ModifySmsSignRequest {
12 #[validate(range(min = 1, message = "SignId必须大于0"))]
13 sign_id: u64,
14
15 #[validate(length(min = 2, max = 12, message = "签名名称必须在2-12字符之间"))]
16 #[builder(setter(transform = |name: impl Into<String>| name.into()))]
17 sign_name: String,
18
19 #[validate(range(max = 6, message = "签名类型必须在0-6之间"))]
20 sign_type: u8,
21
22 #[validate(range(max = 15, message = "证明类型必须在0-15之间"))]
23 document_type: u8,
24
25 #[validate(range(max = 1, message = "国际类型必须为0或1"))]
26 international: u8,
27
28 #[validate(range(max = 1, message = "签名用途必须为0或1"))]
29 sign_purpose: u8,
30
31 #[validate(length(min = 1, message = "证明图片不能为空"))]
32 #[builder(setter(transform = |img: impl Into<String>| img.into()))]
33 proof_image: String,
34
35 #[serde(skip_serializing_if = "Option::is_none")]
36 #[builder(default, setter(transform = |img: impl Into<String>| Some(img.into())))]
37 commission_image: Option<String>,
38
39 #[serde(skip_serializing_if = "Option::is_none")]
40 #[builder(default, setter(transform = |r: impl Into<String>| Some(r.into())))]
41 remark: Option<String>,
42}
43
44impl ApiRequest for ModifySmsSignRequest {
45 type Response = ModifySmsSignResponse;
46 type Output = ModifySignStatus;
47
48 const ACTION: &'static str = "ModifySmsSign";
49
50 fn parse_response(response_text: &str) -> SmsResult<Self::Response> {
51 serde_json::from_str(response_text).map_err(Into::into)
52 }
53
54 fn handle_response(response: Self::Response) -> SmsResult<Self::Output> {
55 match response.response {
56 ResponseBody::Success(success) => {
57 debug!("API 返回成功响应,request_id: {}", success.request_id);
58 info!("签名修改成功");
59 Ok(success.add_sign_status)
60 }
61 ResponseBody::Error(api_error) => {
62 error!(
63 "API 返回错误响应,request_id: {}, 错误码: {}",
64 api_error.request_id, api_error.error.code
65 );
66 Err(crate::api::common::classify_error(
67 &api_error.error.code,
68 &api_error.error.message,
69 api_error.request_id,
70 ))
71 }
72 }
73 }
74}