1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct SetupAttemptPaymentMethodDetailsIdeal {
5 pub bank: Option<SetupAttemptPaymentMethodDetailsIdealBank>,
8 pub bic: Option<SetupAttemptPaymentMethodDetailsIdealBic>,
10 pub generated_sepa_debit: Option<stripe_types::Expandable<stripe_shared::PaymentMethod>>,
12 pub generated_sepa_debit_mandate: Option<stripe_types::Expandable<stripe_shared::Mandate>>,
14 pub iban_last4: Option<String>,
16 pub verified_name: Option<String>,
19}
20#[doc(hidden)]
21pub struct SetupAttemptPaymentMethodDetailsIdealBuilder {
22 bank: Option<Option<SetupAttemptPaymentMethodDetailsIdealBank>>,
23 bic: Option<Option<SetupAttemptPaymentMethodDetailsIdealBic>>,
24 generated_sepa_debit: Option<Option<stripe_types::Expandable<stripe_shared::PaymentMethod>>>,
25 generated_sepa_debit_mandate: Option<Option<stripe_types::Expandable<stripe_shared::Mandate>>>,
26 iban_last4: Option<Option<String>>,
27 verified_name: Option<Option<String>>,
28}
29
30#[allow(
31 unused_variables,
32 irrefutable_let_patterns,
33 clippy::let_unit_value,
34 clippy::match_single_binding,
35 clippy::single_match
36)]
37const _: () = {
38 use miniserde::de::{Map, Visitor};
39 use miniserde::json::Value;
40 use miniserde::{Deserialize, Result, make_place};
41 use stripe_types::miniserde_helpers::FromValueOpt;
42 use stripe_types::{MapBuilder, ObjectDeser};
43
44 make_place!(Place);
45
46 impl Deserialize for SetupAttemptPaymentMethodDetailsIdeal {
47 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
48 Place::new(out)
49 }
50 }
51
52 struct Builder<'a> {
53 out: &'a mut Option<SetupAttemptPaymentMethodDetailsIdeal>,
54 builder: SetupAttemptPaymentMethodDetailsIdealBuilder,
55 }
56
57 impl Visitor for Place<SetupAttemptPaymentMethodDetailsIdeal> {
58 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
59 Ok(Box::new(Builder {
60 out: &mut self.out,
61 builder: SetupAttemptPaymentMethodDetailsIdealBuilder::deser_default(),
62 }))
63 }
64 }
65
66 impl MapBuilder for SetupAttemptPaymentMethodDetailsIdealBuilder {
67 type Out = SetupAttemptPaymentMethodDetailsIdeal;
68 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
69 Ok(match k {
70 "bank" => Deserialize::begin(&mut self.bank),
71 "bic" => Deserialize::begin(&mut self.bic),
72 "generated_sepa_debit" => Deserialize::begin(&mut self.generated_sepa_debit),
73 "generated_sepa_debit_mandate" => {
74 Deserialize::begin(&mut self.generated_sepa_debit_mandate)
75 }
76 "iban_last4" => Deserialize::begin(&mut self.iban_last4),
77 "verified_name" => Deserialize::begin(&mut self.verified_name),
78 _ => <dyn Visitor>::ignore(),
79 })
80 }
81
82 fn deser_default() -> Self {
83 Self {
84 bank: Deserialize::default(),
85 bic: Deserialize::default(),
86 generated_sepa_debit: Deserialize::default(),
87 generated_sepa_debit_mandate: Deserialize::default(),
88 iban_last4: Deserialize::default(),
89 verified_name: Deserialize::default(),
90 }
91 }
92
93 fn take_out(&mut self) -> Option<Self::Out> {
94 let (
95 Some(bank),
96 Some(bic),
97 Some(generated_sepa_debit),
98 Some(generated_sepa_debit_mandate),
99 Some(iban_last4),
100 Some(verified_name),
101 ) = (
102 self.bank.take(),
103 self.bic.take(),
104 self.generated_sepa_debit.take(),
105 self.generated_sepa_debit_mandate.take(),
106 self.iban_last4.take(),
107 self.verified_name.take(),
108 )
109 else {
110 return None;
111 };
112 Some(Self::Out {
113 bank,
114 bic,
115 generated_sepa_debit,
116 generated_sepa_debit_mandate,
117 iban_last4,
118 verified_name,
119 })
120 }
121 }
122
123 impl Map for Builder<'_> {
124 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
125 self.builder.key(k)
126 }
127
128 fn finish(&mut self) -> Result<()> {
129 *self.out = self.builder.take_out();
130 Ok(())
131 }
132 }
133
134 impl ObjectDeser for SetupAttemptPaymentMethodDetailsIdeal {
135 type Builder = SetupAttemptPaymentMethodDetailsIdealBuilder;
136 }
137
138 impl FromValueOpt for SetupAttemptPaymentMethodDetailsIdeal {
139 fn from_value(v: Value) -> Option<Self> {
140 let Value::Object(obj) = v else {
141 return None;
142 };
143 let mut b = SetupAttemptPaymentMethodDetailsIdealBuilder::deser_default();
144 for (k, v) in obj {
145 match k.as_str() {
146 "bank" => b.bank = FromValueOpt::from_value(v),
147 "bic" => b.bic = FromValueOpt::from_value(v),
148 "generated_sepa_debit" => b.generated_sepa_debit = FromValueOpt::from_value(v),
149 "generated_sepa_debit_mandate" => {
150 b.generated_sepa_debit_mandate = FromValueOpt::from_value(v)
151 }
152 "iban_last4" => b.iban_last4 = FromValueOpt::from_value(v),
153 "verified_name" => b.verified_name = FromValueOpt::from_value(v),
154 _ => {}
155 }
156 }
157 b.take_out()
158 }
159 }
160};
161#[derive(Clone, Eq, PartialEq)]
164#[non_exhaustive]
165pub enum SetupAttemptPaymentMethodDetailsIdealBank {
166 AbnAmro,
167 AsnBank,
168 Bunq,
169 Buut,
170 Finom,
171 Handelsbanken,
172 Ing,
173 Knab,
174 Moneyou,
175 N26,
176 Nn,
177 Rabobank,
178 Regiobank,
179 Revolut,
180 SnsBank,
181 TriodosBank,
182 VanLanschot,
183 Yoursafe,
184 Unknown(String),
186}
187impl SetupAttemptPaymentMethodDetailsIdealBank {
188 pub fn as_str(&self) -> &str {
189 use SetupAttemptPaymentMethodDetailsIdealBank::*;
190 match self {
191 AbnAmro => "abn_amro",
192 AsnBank => "asn_bank",
193 Bunq => "bunq",
194 Buut => "buut",
195 Finom => "finom",
196 Handelsbanken => "handelsbanken",
197 Ing => "ing",
198 Knab => "knab",
199 Moneyou => "moneyou",
200 N26 => "n26",
201 Nn => "nn",
202 Rabobank => "rabobank",
203 Regiobank => "regiobank",
204 Revolut => "revolut",
205 SnsBank => "sns_bank",
206 TriodosBank => "triodos_bank",
207 VanLanschot => "van_lanschot",
208 Yoursafe => "yoursafe",
209 Unknown(v) => v,
210 }
211 }
212}
213
214impl std::str::FromStr for SetupAttemptPaymentMethodDetailsIdealBank {
215 type Err = std::convert::Infallible;
216 fn from_str(s: &str) -> Result<Self, Self::Err> {
217 use SetupAttemptPaymentMethodDetailsIdealBank::*;
218 match s {
219 "abn_amro" => Ok(AbnAmro),
220 "asn_bank" => Ok(AsnBank),
221 "bunq" => Ok(Bunq),
222 "buut" => Ok(Buut),
223 "finom" => Ok(Finom),
224 "handelsbanken" => Ok(Handelsbanken),
225 "ing" => Ok(Ing),
226 "knab" => Ok(Knab),
227 "moneyou" => Ok(Moneyou),
228 "n26" => Ok(N26),
229 "nn" => Ok(Nn),
230 "rabobank" => Ok(Rabobank),
231 "regiobank" => Ok(Regiobank),
232 "revolut" => Ok(Revolut),
233 "sns_bank" => Ok(SnsBank),
234 "triodos_bank" => Ok(TriodosBank),
235 "van_lanschot" => Ok(VanLanschot),
236 "yoursafe" => Ok(Yoursafe),
237 v => Ok(Unknown(v.to_owned())),
238 }
239 }
240}
241impl std::fmt::Display for SetupAttemptPaymentMethodDetailsIdealBank {
242 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
243 f.write_str(self.as_str())
244 }
245}
246
247impl std::fmt::Debug for SetupAttemptPaymentMethodDetailsIdealBank {
248 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
249 f.write_str(self.as_str())
250 }
251}
252#[cfg(feature = "serialize")]
253impl serde::Serialize for SetupAttemptPaymentMethodDetailsIdealBank {
254 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
255 where
256 S: serde::Serializer,
257 {
258 serializer.serialize_str(self.as_str())
259 }
260}
261impl miniserde::Deserialize for SetupAttemptPaymentMethodDetailsIdealBank {
262 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
263 crate::Place::new(out)
264 }
265}
266
267impl miniserde::de::Visitor for crate::Place<SetupAttemptPaymentMethodDetailsIdealBank> {
268 fn string(&mut self, s: &str) -> miniserde::Result<()> {
269 use std::str::FromStr;
270 self.out = Some(SetupAttemptPaymentMethodDetailsIdealBank::from_str(s).unwrap());
271 Ok(())
272 }
273}
274
275stripe_types::impl_from_val_with_from_str!(SetupAttemptPaymentMethodDetailsIdealBank);
276#[cfg(feature = "deserialize")]
277impl<'de> serde::Deserialize<'de> for SetupAttemptPaymentMethodDetailsIdealBank {
278 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
279 use std::str::FromStr;
280 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
281 Ok(Self::from_str(&s).unwrap())
282 }
283}
284#[derive(Clone, Eq, PartialEq)]
286#[non_exhaustive]
287pub enum SetupAttemptPaymentMethodDetailsIdealBic {
288 Abnanl2a,
289 Asnbnl21,
290 Bitsnl2a,
291 Bunqnl2a,
292 Buutnl2a,
293 Fnomnl22,
294 Fvlbnl22,
295 Handnl2a,
296 Ingbnl2a,
297 Knabnl2h,
298 Moyonl21,
299 Nnbanl2g,
300 Ntsbdeb1,
301 Rabonl2u,
302 Rbrbnl21,
303 Revoie23,
304 Revolt21,
305 Snsbnl2a,
306 Trionl2u,
307 Unknown(String),
309}
310impl SetupAttemptPaymentMethodDetailsIdealBic {
311 pub fn as_str(&self) -> &str {
312 use SetupAttemptPaymentMethodDetailsIdealBic::*;
313 match self {
314 Abnanl2a => "ABNANL2A",
315 Asnbnl21 => "ASNBNL21",
316 Bitsnl2a => "BITSNL2A",
317 Bunqnl2a => "BUNQNL2A",
318 Buutnl2a => "BUUTNL2A",
319 Fnomnl22 => "FNOMNL22",
320 Fvlbnl22 => "FVLBNL22",
321 Handnl2a => "HANDNL2A",
322 Ingbnl2a => "INGBNL2A",
323 Knabnl2h => "KNABNL2H",
324 Moyonl21 => "MOYONL21",
325 Nnbanl2g => "NNBANL2G",
326 Ntsbdeb1 => "NTSBDEB1",
327 Rabonl2u => "RABONL2U",
328 Rbrbnl21 => "RBRBNL21",
329 Revoie23 => "REVOIE23",
330 Revolt21 => "REVOLT21",
331 Snsbnl2a => "SNSBNL2A",
332 Trionl2u => "TRIONL2U",
333 Unknown(v) => v,
334 }
335 }
336}
337
338impl std::str::FromStr for SetupAttemptPaymentMethodDetailsIdealBic {
339 type Err = std::convert::Infallible;
340 fn from_str(s: &str) -> Result<Self, Self::Err> {
341 use SetupAttemptPaymentMethodDetailsIdealBic::*;
342 match s {
343 "ABNANL2A" => Ok(Abnanl2a),
344 "ASNBNL21" => Ok(Asnbnl21),
345 "BITSNL2A" => Ok(Bitsnl2a),
346 "BUNQNL2A" => Ok(Bunqnl2a),
347 "BUUTNL2A" => Ok(Buutnl2a),
348 "FNOMNL22" => Ok(Fnomnl22),
349 "FVLBNL22" => Ok(Fvlbnl22),
350 "HANDNL2A" => Ok(Handnl2a),
351 "INGBNL2A" => Ok(Ingbnl2a),
352 "KNABNL2H" => Ok(Knabnl2h),
353 "MOYONL21" => Ok(Moyonl21),
354 "NNBANL2G" => Ok(Nnbanl2g),
355 "NTSBDEB1" => Ok(Ntsbdeb1),
356 "RABONL2U" => Ok(Rabonl2u),
357 "RBRBNL21" => Ok(Rbrbnl21),
358 "REVOIE23" => Ok(Revoie23),
359 "REVOLT21" => Ok(Revolt21),
360 "SNSBNL2A" => Ok(Snsbnl2a),
361 "TRIONL2U" => Ok(Trionl2u),
362 v => Ok(Unknown(v.to_owned())),
363 }
364 }
365}
366impl std::fmt::Display for SetupAttemptPaymentMethodDetailsIdealBic {
367 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
368 f.write_str(self.as_str())
369 }
370}
371
372impl std::fmt::Debug for SetupAttemptPaymentMethodDetailsIdealBic {
373 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
374 f.write_str(self.as_str())
375 }
376}
377#[cfg(feature = "serialize")]
378impl serde::Serialize for SetupAttemptPaymentMethodDetailsIdealBic {
379 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
380 where
381 S: serde::Serializer,
382 {
383 serializer.serialize_str(self.as_str())
384 }
385}
386impl miniserde::Deserialize for SetupAttemptPaymentMethodDetailsIdealBic {
387 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
388 crate::Place::new(out)
389 }
390}
391
392impl miniserde::de::Visitor for crate::Place<SetupAttemptPaymentMethodDetailsIdealBic> {
393 fn string(&mut self, s: &str) -> miniserde::Result<()> {
394 use std::str::FromStr;
395 self.out = Some(SetupAttemptPaymentMethodDetailsIdealBic::from_str(s).unwrap());
396 Ok(())
397 }
398}
399
400stripe_types::impl_from_val_with_from_str!(SetupAttemptPaymentMethodDetailsIdealBic);
401#[cfg(feature = "deserialize")]
402impl<'de> serde::Deserialize<'de> for SetupAttemptPaymentMethodDetailsIdealBic {
403 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
404 use std::str::FromStr;
405 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
406 Ok(Self::from_str(&s).unwrap())
407 }
408}