stripe_terminal/terminal_location/
types.rs1#[derive(Clone, Debug)]
7#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
8pub struct TerminalLocation {
9 pub address: stripe_shared::Address,
10 pub address_kana: Option<stripe_shared::LegalEntityJapanAddress>,
11 pub address_kanji: Option<stripe_shared::LegalEntityJapanAddress>,
12 pub configuration_overrides: Option<String>,
14 pub display_name: String,
16 pub display_name_kana: Option<String>,
18 pub display_name_kanji: Option<String>,
20 pub id: stripe_terminal::TerminalLocationId,
22 pub livemode: bool,
24 pub metadata: std::collections::HashMap<String, String>,
27 pub phone: Option<String>,
29}
30#[doc(hidden)]
31pub struct TerminalLocationBuilder {
32 address: Option<stripe_shared::Address>,
33 address_kana: Option<Option<stripe_shared::LegalEntityJapanAddress>>,
34 address_kanji: Option<Option<stripe_shared::LegalEntityJapanAddress>>,
35 configuration_overrides: Option<Option<String>>,
36 display_name: Option<String>,
37 display_name_kana: Option<Option<String>>,
38 display_name_kanji: Option<Option<String>>,
39 id: Option<stripe_terminal::TerminalLocationId>,
40 livemode: Option<bool>,
41 metadata: Option<std::collections::HashMap<String, String>>,
42 phone: Option<Option<String>>,
43}
44
45#[allow(
46 unused_variables,
47 irrefutable_let_patterns,
48 clippy::let_unit_value,
49 clippy::match_single_binding,
50 clippy::single_match
51)]
52const _: () = {
53 use miniserde::de::{Map, Visitor};
54 use miniserde::json::Value;
55 use miniserde::{Deserialize, Result, make_place};
56 use stripe_types::miniserde_helpers::FromValueOpt;
57 use stripe_types::{MapBuilder, ObjectDeser};
58
59 make_place!(Place);
60
61 impl Deserialize for TerminalLocation {
62 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
63 Place::new(out)
64 }
65 }
66
67 struct Builder<'a> {
68 out: &'a mut Option<TerminalLocation>,
69 builder: TerminalLocationBuilder,
70 }
71
72 impl Visitor for Place<TerminalLocation> {
73 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
74 Ok(Box::new(Builder {
75 out: &mut self.out,
76 builder: TerminalLocationBuilder::deser_default(),
77 }))
78 }
79 }
80
81 impl MapBuilder for TerminalLocationBuilder {
82 type Out = TerminalLocation;
83 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
84 Ok(match k {
85 "address" => Deserialize::begin(&mut self.address),
86 "address_kana" => Deserialize::begin(&mut self.address_kana),
87 "address_kanji" => Deserialize::begin(&mut self.address_kanji),
88 "configuration_overrides" => Deserialize::begin(&mut self.configuration_overrides),
89 "display_name" => Deserialize::begin(&mut self.display_name),
90 "display_name_kana" => Deserialize::begin(&mut self.display_name_kana),
91 "display_name_kanji" => Deserialize::begin(&mut self.display_name_kanji),
92 "id" => Deserialize::begin(&mut self.id),
93 "livemode" => Deserialize::begin(&mut self.livemode),
94 "metadata" => Deserialize::begin(&mut self.metadata),
95 "phone" => Deserialize::begin(&mut self.phone),
96
97 _ => <dyn Visitor>::ignore(),
98 })
99 }
100
101 fn deser_default() -> Self {
102 Self {
103 address: Deserialize::default(),
104 address_kana: Deserialize::default(),
105 address_kanji: Deserialize::default(),
106 configuration_overrides: Deserialize::default(),
107 display_name: Deserialize::default(),
108 display_name_kana: Deserialize::default(),
109 display_name_kanji: Deserialize::default(),
110 id: Deserialize::default(),
111 livemode: Deserialize::default(),
112 metadata: Deserialize::default(),
113 phone: Deserialize::default(),
114 }
115 }
116
117 fn take_out(&mut self) -> Option<Self::Out> {
118 let (
119 Some(address),
120 Some(address_kana),
121 Some(address_kanji),
122 Some(configuration_overrides),
123 Some(display_name),
124 Some(display_name_kana),
125 Some(display_name_kanji),
126 Some(id),
127 Some(livemode),
128 Some(metadata),
129 Some(phone),
130 ) = (
131 self.address.take(),
132 self.address_kana.take(),
133 self.address_kanji.take(),
134 self.configuration_overrides.take(),
135 self.display_name.take(),
136 self.display_name_kana.take(),
137 self.display_name_kanji.take(),
138 self.id.take(),
139 self.livemode,
140 self.metadata.take(),
141 self.phone.take(),
142 )
143 else {
144 return None;
145 };
146 Some(Self::Out {
147 address,
148 address_kana,
149 address_kanji,
150 configuration_overrides,
151 display_name,
152 display_name_kana,
153 display_name_kanji,
154 id,
155 livemode,
156 metadata,
157 phone,
158 })
159 }
160 }
161
162 impl Map for Builder<'_> {
163 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
164 self.builder.key(k)
165 }
166
167 fn finish(&mut self) -> Result<()> {
168 *self.out = self.builder.take_out();
169 Ok(())
170 }
171 }
172
173 impl ObjectDeser for TerminalLocation {
174 type Builder = TerminalLocationBuilder;
175 }
176
177 impl FromValueOpt for TerminalLocation {
178 fn from_value(v: Value) -> Option<Self> {
179 let Value::Object(obj) = v else {
180 return None;
181 };
182 let mut b = TerminalLocationBuilder::deser_default();
183 for (k, v) in obj {
184 match k.as_str() {
185 "address" => b.address = FromValueOpt::from_value(v),
186 "address_kana" => b.address_kana = FromValueOpt::from_value(v),
187 "address_kanji" => b.address_kanji = FromValueOpt::from_value(v),
188 "configuration_overrides" => {
189 b.configuration_overrides = FromValueOpt::from_value(v)
190 }
191 "display_name" => b.display_name = FromValueOpt::from_value(v),
192 "display_name_kana" => b.display_name_kana = FromValueOpt::from_value(v),
193 "display_name_kanji" => b.display_name_kanji = FromValueOpt::from_value(v),
194 "id" => b.id = FromValueOpt::from_value(v),
195 "livemode" => b.livemode = FromValueOpt::from_value(v),
196 "metadata" => b.metadata = FromValueOpt::from_value(v),
197 "phone" => b.phone = FromValueOpt::from_value(v),
198
199 _ => {}
200 }
201 }
202 b.take_out()
203 }
204 }
205};
206#[cfg(feature = "serialize")]
207impl serde::Serialize for TerminalLocation {
208 fn serialize<S: serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
209 use serde::ser::SerializeStruct;
210 let mut s = s.serialize_struct("TerminalLocation", 12)?;
211 s.serialize_field("address", &self.address)?;
212 s.serialize_field("address_kana", &self.address_kana)?;
213 s.serialize_field("address_kanji", &self.address_kanji)?;
214 s.serialize_field("configuration_overrides", &self.configuration_overrides)?;
215 s.serialize_field("display_name", &self.display_name)?;
216 s.serialize_field("display_name_kana", &self.display_name_kana)?;
217 s.serialize_field("display_name_kanji", &self.display_name_kanji)?;
218 s.serialize_field("id", &self.id)?;
219 s.serialize_field("livemode", &self.livemode)?;
220 s.serialize_field("metadata", &self.metadata)?;
221 s.serialize_field("phone", &self.phone)?;
222
223 s.serialize_field("object", "terminal.location")?;
224 s.end()
225 }
226}
227impl stripe_types::Object for TerminalLocation {
228 type Id = stripe_terminal::TerminalLocationId;
229 fn id(&self) -> &Self::Id {
230 &self.id
231 }
232
233 fn into_id(self) -> Self::Id {
234 self.id
235 }
236}
237stripe_types::def_id!(TerminalLocationId);