dnspod_lib/
header_params.rs1use 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#[derive(Debug, Serialize)]
14pub struct HeaderParams {
15 #[serde(rename = "X-TC-Action")]
17 pub action: &'static str,
18 #[serde(rename = "X-TC-Version")]
20 pub version: Version,
21 #[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 #[serde(rename = "Authorization")]
31 pub authorization: String,
32 #[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}