tencentcloud_sms/api/template/modify_sms_template/
request.rs

1use super::response::{ModifySmsTemplateResponse, ModifyTemplateStatus, 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 ModifySmsTemplateRequest {
12    #[validate(range(min = 1, message = "TemplateId必须大于0"))]
13    template_id: u64,
14
15    #[validate(length(min = 1, max = 30, message = "模板名称必须在1-30字符之间"))]
16    #[builder(setter(transform = |name: impl Into<String>| name.into()))]
17    template_name: String,
18
19    #[validate(length(min = 1, message = "模板内容不能为空"))]
20    #[builder(setter(transform = |content: impl Into<String>| content.into()))]
21    template_content: String,
22
23    #[validate(range(max = 1, message = "短信类型必须为0或1"))]
24    sms_type: u8,
25
26    #[validate(range(max = 1, message = "国际类型必须为0或1"))]
27    international: u8,
28
29    #[validate(length(min = 1, max = 100, message = "备注必须在1-100字符之间"))]
30    #[builder(setter(transform = |r: impl Into<String>| r.into()))]
31    remark: String,
32}
33
34impl ApiRequest for ModifySmsTemplateRequest {
35    type Response = ModifySmsTemplateResponse;
36    type Output = ModifyTemplateStatus;
37    const ACTION: &'static str = "ModifySmsTemplate";
38
39    fn parse_response(response_text: &str) -> SmsResult<Self::Response> {
40        serde_json::from_str(response_text).map_err(Into::into)
41    }
42
43    fn handle_response(response: Self::Response) -> SmsResult<Self::Output> {
44        match response.response {
45            ResponseBody::Success(success) => {
46                debug!("API 返回成功响应,request_id: {}", success.request_id);
47                info!("模板修改成功");
48                Ok(success.add_template_status)
49            }
50            ResponseBody::Error(api_error) => {
51                error!(
52                    "API 返回错误响应,request_id: {}, 错误码: {}",
53                    api_error.request_id, api_error.error.code
54                );
55                Err(crate::api::common::classify_error(
56                    &api_error.error.code,
57                    &api_error.error.message,
58                    api_error.request_id,
59                ))
60            }
61        }
62    }
63}