dnspod_lib/
header_params.rs

1//! <https://cloud.tencent.com/document/api/1427/56188>
2
3use std::collections::HashMap;
4
5use crate::data_types::*;
6use chrono::DateTime;
7use chrono::Utc;
8use serde::Serialize;
9
10use crate::utils::datetime_to_timestamp_string;
11
12/// Headers
13#[derive(Debug, Serialize)]
14pub struct HeaderParams {
15    /// X-TC-Action
16    #[serde(rename = "X-TC-Action")]
17    pub action: &'static str,
18    /// X-TC-Version
19    #[serde(rename = "X-TC-Version")]
20    pub version: Version,
21    /// X-TC-Region
22    #[serde(rename = "X-TC-Region", skip_serializing_if = "Option::is_none")]
23    pub region: Option<Region>,
24    #[serde(
25        rename = "X-TC-Timestamp",
26        serialize_with = "datetime_to_timestamp_string"
27    )]
28    pub datetime: DateTime<Utc>,
29    /// Authorization
30    #[serde(rename = "Authorization")]
31    pub authorization: String,
32    /// X-TC-Language
33    /// en-US/zh-CN
34    #[serde(rename = "Language")]
35    pub language: Language,
36    #[serde(rename = "Content-Type")]
37    pub content_type: ContentType,
38}
39
40impl From<HeaderParams> for HashMap<String, String> {
41    fn from(value: HeaderParams) -> Self {
42        let value = serde_json::to_value(value)
43            .expect("error: HeaderParams to HashMap failed (serde_json::to_value)");
44        serde_json::from_value(value)
45            .expect("error: HeaderParams to HashMap failed (serde_json::from_value)")
46    }
47}