datadog_api_client/datadogV1/model/
model_aws_event_bridge_create_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 AWSEventBridgeCreateRequest {
14 #[serde(rename = "account_id")]
16 pub account_id: Option<String>,
17 #[serde(rename = "create_event_bus")]
20 pub create_event_bus: Option<bool>,
21 #[serde(rename = "event_generator_name")]
24 pub event_generator_name: Option<String>,
25 #[serde(rename = "region")]
27 pub region: Option<String>,
28 #[serde(flatten)]
29 pub additional_properties: std::collections::BTreeMap<String, serde_json::Value>,
30 #[serde(skip)]
31 #[serde(default)]
32 pub(crate) _unparsed: bool,
33}
34
35impl AWSEventBridgeCreateRequest {
36 pub fn new() -> AWSEventBridgeCreateRequest {
37 AWSEventBridgeCreateRequest {
38 account_id: None,
39 create_event_bus: None,
40 event_generator_name: None,
41 region: None,
42 additional_properties: std::collections::BTreeMap::new(),
43 _unparsed: false,
44 }
45 }
46
47 pub fn account_id(mut self, value: String) -> Self {
48 self.account_id = Some(value);
49 self
50 }
51
52 pub fn create_event_bus(mut self, value: bool) -> Self {
53 self.create_event_bus = Some(value);
54 self
55 }
56
57 pub fn event_generator_name(mut self, value: String) -> Self {
58 self.event_generator_name = Some(value);
59 self
60 }
61
62 pub fn region(mut self, value: String) -> Self {
63 self.region = Some(value);
64 self
65 }
66
67 pub fn additional_properties(
68 mut self,
69 value: std::collections::BTreeMap<String, serde_json::Value>,
70 ) -> Self {
71 self.additional_properties = value;
72 self
73 }
74}
75
76impl Default for AWSEventBridgeCreateRequest {
77 fn default() -> Self {
78 Self::new()
79 }
80}
81
82impl<'de> Deserialize<'de> for AWSEventBridgeCreateRequest {
83 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
84 where
85 D: Deserializer<'de>,
86 {
87 struct AWSEventBridgeCreateRequestVisitor;
88 impl<'a> Visitor<'a> for AWSEventBridgeCreateRequestVisitor {
89 type Value = AWSEventBridgeCreateRequest;
90
91 fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result {
92 f.write_str("a mapping")
93 }
94
95 fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
96 where
97 M: MapAccess<'a>,
98 {
99 let mut account_id: Option<String> = None;
100 let mut create_event_bus: Option<bool> = None;
101 let mut event_generator_name: Option<String> = None;
102 let mut region: Option<String> = None;
103 let mut additional_properties: std::collections::BTreeMap<
104 String,
105 serde_json::Value,
106 > = std::collections::BTreeMap::new();
107 let mut _unparsed = false;
108
109 while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
110 match k.as_str() {
111 "account_id" => {
112 if v.is_null() {
113 continue;
114 }
115 account_id = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
116 }
117 "create_event_bus" => {
118 if v.is_null() {
119 continue;
120 }
121 create_event_bus =
122 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
123 }
124 "event_generator_name" => {
125 if v.is_null() {
126 continue;
127 }
128 event_generator_name =
129 Some(serde_json::from_value(v).map_err(M::Error::custom)?);
130 }
131 "region" => {
132 if v.is_null() {
133 continue;
134 }
135 region = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
136 }
137 &_ => {
138 if let Ok(value) = serde_json::from_value(v.clone()) {
139 additional_properties.insert(k, value);
140 }
141 }
142 }
143 }
144
145 let content = AWSEventBridgeCreateRequest {
146 account_id,
147 create_event_bus,
148 event_generator_name,
149 region,
150 additional_properties,
151 _unparsed,
152 };
153
154 Ok(content)
155 }
156 }
157
158 deserializer.deserialize_any(AWSEventBridgeCreateRequestVisitor)
159 }
160}