datadog_api_client/datadogV2/model/
model_observability_pipeline_kafka_source_sasl.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 ObservabilityPipelineKafkaSourceSasl {
14 #[serde(rename = "mechanism")]
16 pub mechanism:
17 Option<crate::datadogV2::model::ObservabilityPipelinePipelineKafkaSourceSaslMechanism>,
18 #[serde(flatten)]
19 pub additional_properties: std::collections::BTreeMap<String, serde_json::Value>,
20 #[serde(skip)]
21 #[serde(default)]
22 pub(crate) _unparsed: bool,
23}
24
25impl ObservabilityPipelineKafkaSourceSasl {
26 pub fn new() -> ObservabilityPipelineKafkaSourceSasl {
27 ObservabilityPipelineKafkaSourceSasl {
28 mechanism: None,
29 additional_properties: std::collections::BTreeMap::new(),
30 _unparsed: false,
31 }
32 }
33
34 pub fn mechanism(
35 mut self,
36 value: crate::datadogV2::model::ObservabilityPipelinePipelineKafkaSourceSaslMechanism,
37 ) -> Self {
38 self.mechanism = Some(value);
39 self
40 }
41
42 pub fn additional_properties(
43 mut self,
44 value: std::collections::BTreeMap<String, serde_json::Value>,
45 ) -> Self {
46 self.additional_properties = value;
47 self
48 }
49}
50
51impl Default for ObservabilityPipelineKafkaSourceSasl {
52 fn default() -> Self {
53 Self::new()
54 }
55}
56
57impl<'de> Deserialize<'de> for ObservabilityPipelineKafkaSourceSasl {
58 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
59 where
60 D: Deserializer<'de>,
61 {
62 struct ObservabilityPipelineKafkaSourceSaslVisitor;
63 impl<'a> Visitor<'a> for ObservabilityPipelineKafkaSourceSaslVisitor {
64 type Value = ObservabilityPipelineKafkaSourceSasl;
65
66 fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result {
67 f.write_str("a mapping")
68 }
69
70 fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
71 where
72 M: MapAccess<'a>,
73 {
74 let mut mechanism: Option<
75 crate::datadogV2::model::ObservabilityPipelinePipelineKafkaSourceSaslMechanism,
76 > = None;
77 let mut additional_properties: std::collections::BTreeMap<
78 String,
79 serde_json::Value,
80 > = std::collections::BTreeMap::new();
81 let mut _unparsed = false;
82
83 while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
84 match k.as_str() {
85 "mechanism" => {
86 if v.is_null() {
87 continue;
88 }
89 mechanism = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
90 if let Some(ref _mechanism) = mechanism {
91 match _mechanism {
92 crate::datadogV2::model::ObservabilityPipelinePipelineKafkaSourceSaslMechanism::UnparsedObject(_mechanism) => {
93 _unparsed = true;
94 },
95 _ => {}
96 }
97 }
98 }
99 &_ => {
100 if let Ok(value) = serde_json::from_value(v.clone()) {
101 additional_properties.insert(k, value);
102 }
103 }
104 }
105 }
106
107 let content = ObservabilityPipelineKafkaSourceSasl {
108 mechanism,
109 additional_properties,
110 _unparsed,
111 };
112
113 Ok(content)
114 }
115 }
116
117 deserializer.deserialize_any(ObservabilityPipelineKafkaSourceSaslVisitor)
118 }
119}