datadog_api_client/datadogV2/model/
model_create_custom_framework_request.rs1use serde::de::{Error, MapAccess, Visitor};
5use serde::{Deserialize, Deserializer, Serialize};
6use serde_with::skip_serializing_none;
7use std::fmt::{self, Formatter};
8
9#[non_exhaustive]
11#[skip_serializing_none]
12#[derive(Clone, Debug, PartialEq, Serialize)]
13pub struct CreateCustomFrameworkRequest {
14 #[serde(rename = "data")]
16 pub data: crate::datadogV2::model::CustomFrameworkData,
17 #[serde(flatten)]
18 pub additional_properties: std::collections::BTreeMap<String, serde_json::Value>,
19 #[serde(skip)]
20 #[serde(default)]
21 pub(crate) _unparsed: bool,
22}
23
24impl CreateCustomFrameworkRequest {
25 pub fn new(data: crate::datadogV2::model::CustomFrameworkData) -> CreateCustomFrameworkRequest {
26 CreateCustomFrameworkRequest {
27 data,
28 additional_properties: std::collections::BTreeMap::new(),
29 _unparsed: false,
30 }
31 }
32
33 pub fn additional_properties(
34 mut self,
35 value: std::collections::BTreeMap<String, serde_json::Value>,
36 ) -> Self {
37 self.additional_properties = value;
38 self
39 }
40}
41
42impl<'de> Deserialize<'de> for CreateCustomFrameworkRequest {
43 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
44 where
45 D: Deserializer<'de>,
46 {
47 struct CreateCustomFrameworkRequestVisitor;
48 impl<'a> Visitor<'a> for CreateCustomFrameworkRequestVisitor {
49 type Value = CreateCustomFrameworkRequest;
50
51 fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result {
52 f.write_str("a mapping")
53 }
54
55 fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
56 where
57 M: MapAccess<'a>,
58 {
59 let mut data: Option<crate::datadogV2::model::CustomFrameworkData> = None;
60 let mut additional_properties: std::collections::BTreeMap<
61 String,
62 serde_json::Value,
63 > = std::collections::BTreeMap::new();
64 let mut _unparsed = false;
65
66 while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
67 match k.as_str() {
68 "data" => {
69 data = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
70 }
71 &_ => {
72 if let Ok(value) = serde_json::from_value(v.clone()) {
73 additional_properties.insert(k, value);
74 }
75 }
76 }
77 }
78 let data = data.ok_or_else(|| M::Error::missing_field("data"))?;
79
80 let content = CreateCustomFrameworkRequest {
81 data,
82 additional_properties,
83 _unparsed,
84 };
85
86 Ok(content)
87 }
88 }
89
90 deserializer.deserialize_any(CreateCustomFrameworkRequestVisitor)
91 }
92}