1#[derive(Clone, Eq, PartialEq)]
2#[cfg_attr(not(feature = "redact-generated-debug"), derive(Debug))]
3#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
4#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5pub struct SourceTypeMultibanco {
6 pub entity: Option<String>,
7 pub reference: Option<String>,
8 pub refund_account_holder_address_city: Option<String>,
9 pub refund_account_holder_address_country: Option<String>,
10 pub refund_account_holder_address_line1: Option<String>,
11 pub refund_account_holder_address_line2: Option<String>,
12 pub refund_account_holder_address_postal_code: Option<String>,
13 pub refund_account_holder_address_state: Option<String>,
14 pub refund_account_holder_name: Option<String>,
15 pub refund_iban: Option<String>,
16}
17#[cfg(feature = "redact-generated-debug")]
18impl std::fmt::Debug for SourceTypeMultibanco {
19 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
20 f.debug_struct("SourceTypeMultibanco").finish_non_exhaustive()
21 }
22}
23#[doc(hidden)]
24pub struct SourceTypeMultibancoBuilder {
25 entity: Option<Option<String>>,
26 reference: Option<Option<String>>,
27 refund_account_holder_address_city: Option<Option<String>>,
28 refund_account_holder_address_country: Option<Option<String>>,
29 refund_account_holder_address_line1: Option<Option<String>>,
30 refund_account_holder_address_line2: Option<Option<String>>,
31 refund_account_holder_address_postal_code: Option<Option<String>>,
32 refund_account_holder_address_state: Option<Option<String>>,
33 refund_account_holder_name: Option<Option<String>>,
34 refund_iban: Option<Option<String>>,
35}
36
37#[allow(
38 unused_variables,
39 irrefutable_let_patterns,
40 clippy::let_unit_value,
41 clippy::match_single_binding,
42 clippy::single_match
43)]
44const _: () = {
45 use miniserde::de::{Map, Visitor};
46 use miniserde::json::Value;
47 use miniserde::{Deserialize, Result, make_place};
48 use stripe_types::miniserde_helpers::FromValueOpt;
49 use stripe_types::{MapBuilder, ObjectDeser};
50
51 make_place!(Place);
52
53 impl Deserialize for SourceTypeMultibanco {
54 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
55 Place::new(out)
56 }
57 }
58
59 struct Builder<'a> {
60 out: &'a mut Option<SourceTypeMultibanco>,
61 builder: SourceTypeMultibancoBuilder,
62 }
63
64 impl Visitor for Place<SourceTypeMultibanco> {
65 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
66 Ok(Box::new(Builder {
67 out: &mut self.out,
68 builder: SourceTypeMultibancoBuilder::deser_default(),
69 }))
70 }
71 }
72
73 impl MapBuilder for SourceTypeMultibancoBuilder {
74 type Out = SourceTypeMultibanco;
75 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
76 Ok(match k {
77 "entity" => Deserialize::begin(&mut self.entity),
78 "reference" => Deserialize::begin(&mut self.reference),
79 "refund_account_holder_address_city" => {
80 Deserialize::begin(&mut self.refund_account_holder_address_city)
81 }
82 "refund_account_holder_address_country" => {
83 Deserialize::begin(&mut self.refund_account_holder_address_country)
84 }
85 "refund_account_holder_address_line1" => {
86 Deserialize::begin(&mut self.refund_account_holder_address_line1)
87 }
88 "refund_account_holder_address_line2" => {
89 Deserialize::begin(&mut self.refund_account_holder_address_line2)
90 }
91 "refund_account_holder_address_postal_code" => {
92 Deserialize::begin(&mut self.refund_account_holder_address_postal_code)
93 }
94 "refund_account_holder_address_state" => {
95 Deserialize::begin(&mut self.refund_account_holder_address_state)
96 }
97 "refund_account_holder_name" => {
98 Deserialize::begin(&mut self.refund_account_holder_name)
99 }
100 "refund_iban" => Deserialize::begin(&mut self.refund_iban),
101 _ => <dyn Visitor>::ignore(),
102 })
103 }
104
105 fn deser_default() -> Self {
106 Self {
107 entity: Deserialize::default(),
108 reference: Deserialize::default(),
109 refund_account_holder_address_city: Deserialize::default(),
110 refund_account_holder_address_country: Deserialize::default(),
111 refund_account_holder_address_line1: Deserialize::default(),
112 refund_account_holder_address_line2: Deserialize::default(),
113 refund_account_holder_address_postal_code: Deserialize::default(),
114 refund_account_holder_address_state: Deserialize::default(),
115 refund_account_holder_name: Deserialize::default(),
116 refund_iban: Deserialize::default(),
117 }
118 }
119
120 fn take_out(&mut self) -> Option<Self::Out> {
121 let (
122 Some(entity),
123 Some(reference),
124 Some(refund_account_holder_address_city),
125 Some(refund_account_holder_address_country),
126 Some(refund_account_holder_address_line1),
127 Some(refund_account_holder_address_line2),
128 Some(refund_account_holder_address_postal_code),
129 Some(refund_account_holder_address_state),
130 Some(refund_account_holder_name),
131 Some(refund_iban),
132 ) = (
133 self.entity.take(),
134 self.reference.take(),
135 self.refund_account_holder_address_city.take(),
136 self.refund_account_holder_address_country.take(),
137 self.refund_account_holder_address_line1.take(),
138 self.refund_account_holder_address_line2.take(),
139 self.refund_account_holder_address_postal_code.take(),
140 self.refund_account_holder_address_state.take(),
141 self.refund_account_holder_name.take(),
142 self.refund_iban.take(),
143 )
144 else {
145 return None;
146 };
147 Some(Self::Out {
148 entity,
149 reference,
150 refund_account_holder_address_city,
151 refund_account_holder_address_country,
152 refund_account_holder_address_line1,
153 refund_account_holder_address_line2,
154 refund_account_holder_address_postal_code,
155 refund_account_holder_address_state,
156 refund_account_holder_name,
157 refund_iban,
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 SourceTypeMultibanco {
174 type Builder = SourceTypeMultibancoBuilder;
175 }
176
177 impl FromValueOpt for SourceTypeMultibanco {
178 fn from_value(v: Value) -> Option<Self> {
179 let Value::Object(obj) = v else {
180 return None;
181 };
182 let mut b = SourceTypeMultibancoBuilder::deser_default();
183 for (k, v) in obj {
184 match k.as_str() {
185 "entity" => b.entity = FromValueOpt::from_value(v),
186 "reference" => b.reference = FromValueOpt::from_value(v),
187 "refund_account_holder_address_city" => {
188 b.refund_account_holder_address_city = FromValueOpt::from_value(v)
189 }
190 "refund_account_holder_address_country" => {
191 b.refund_account_holder_address_country = FromValueOpt::from_value(v)
192 }
193 "refund_account_holder_address_line1" => {
194 b.refund_account_holder_address_line1 = FromValueOpt::from_value(v)
195 }
196 "refund_account_holder_address_line2" => {
197 b.refund_account_holder_address_line2 = FromValueOpt::from_value(v)
198 }
199 "refund_account_holder_address_postal_code" => {
200 b.refund_account_holder_address_postal_code = FromValueOpt::from_value(v)
201 }
202 "refund_account_holder_address_state" => {
203 b.refund_account_holder_address_state = FromValueOpt::from_value(v)
204 }
205 "refund_account_holder_name" => {
206 b.refund_account_holder_name = FromValueOpt::from_value(v)
207 }
208 "refund_iban" => b.refund_iban = FromValueOpt::from_value(v),
209 _ => {}
210 }
211 }
212 b.take_out()
213 }
214 }
215};