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 Mollie,
175 Moneyou,
176 N26,
177 Nn,
178 Rabobank,
179 Regiobank,
180 Revolut,
181 SnsBank,
182 TriodosBank,
183 VanLanschot,
184 Yoursafe,
185 Unknown(String),
187}
188impl SetupAttemptPaymentMethodDetailsIdealBank {
189 pub fn as_str(&self) -> &str {
190 use SetupAttemptPaymentMethodDetailsIdealBank::*;
191 match self {
192 AbnAmro => "abn_amro",
193 AsnBank => "asn_bank",
194 Bunq => "bunq",
195 Buut => "buut",
196 Finom => "finom",
197 Handelsbanken => "handelsbanken",
198 Ing => "ing",
199 Knab => "knab",
200 Mollie => "mollie",
201 Moneyou => "moneyou",
202 N26 => "n26",
203 Nn => "nn",
204 Rabobank => "rabobank",
205 Regiobank => "regiobank",
206 Revolut => "revolut",
207 SnsBank => "sns_bank",
208 TriodosBank => "triodos_bank",
209 VanLanschot => "van_lanschot",
210 Yoursafe => "yoursafe",
211 Unknown(v) => v,
212 }
213 }
214}
215
216impl std::str::FromStr for SetupAttemptPaymentMethodDetailsIdealBank {
217 type Err = std::convert::Infallible;
218 fn from_str(s: &str) -> Result<Self, Self::Err> {
219 use SetupAttemptPaymentMethodDetailsIdealBank::*;
220 match s {
221 "abn_amro" => Ok(AbnAmro),
222 "asn_bank" => Ok(AsnBank),
223 "bunq" => Ok(Bunq),
224 "buut" => Ok(Buut),
225 "finom" => Ok(Finom),
226 "handelsbanken" => Ok(Handelsbanken),
227 "ing" => Ok(Ing),
228 "knab" => Ok(Knab),
229 "mollie" => Ok(Mollie),
230 "moneyou" => Ok(Moneyou),
231 "n26" => Ok(N26),
232 "nn" => Ok(Nn),
233 "rabobank" => Ok(Rabobank),
234 "regiobank" => Ok(Regiobank),
235 "revolut" => Ok(Revolut),
236 "sns_bank" => Ok(SnsBank),
237 "triodos_bank" => Ok(TriodosBank),
238 "van_lanschot" => Ok(VanLanschot),
239 "yoursafe" => Ok(Yoursafe),
240 v => {
241 tracing::warn!(
242 "Unknown value '{}' for enum '{}'",
243 v,
244 "SetupAttemptPaymentMethodDetailsIdealBank"
245 );
246 Ok(Unknown(v.to_owned()))
247 }
248 }
249 }
250}
251impl std::fmt::Display for SetupAttemptPaymentMethodDetailsIdealBank {
252 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
253 f.write_str(self.as_str())
254 }
255}
256
257impl std::fmt::Debug for SetupAttemptPaymentMethodDetailsIdealBank {
258 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
259 f.write_str(self.as_str())
260 }
261}
262#[cfg(feature = "serialize")]
263impl serde::Serialize for SetupAttemptPaymentMethodDetailsIdealBank {
264 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
265 where
266 S: serde::Serializer,
267 {
268 serializer.serialize_str(self.as_str())
269 }
270}
271impl miniserde::Deserialize for SetupAttemptPaymentMethodDetailsIdealBank {
272 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
273 crate::Place::new(out)
274 }
275}
276
277impl miniserde::de::Visitor for crate::Place<SetupAttemptPaymentMethodDetailsIdealBank> {
278 fn string(&mut self, s: &str) -> miniserde::Result<()> {
279 use std::str::FromStr;
280 self.out =
281 Some(SetupAttemptPaymentMethodDetailsIdealBank::from_str(s).expect("infallible"));
282 Ok(())
283 }
284}
285
286stripe_types::impl_from_val_with_from_str!(SetupAttemptPaymentMethodDetailsIdealBank);
287#[cfg(feature = "deserialize")]
288impl<'de> serde::Deserialize<'de> for SetupAttemptPaymentMethodDetailsIdealBank {
289 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
290 use std::str::FromStr;
291 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
292 Ok(Self::from_str(&s).expect("infallible"))
293 }
294}
295#[derive(Clone, Eq, PartialEq)]
297#[non_exhaustive]
298pub enum SetupAttemptPaymentMethodDetailsIdealBic {
299 Abnanl2a,
300 Asnbnl21,
301 Bitsnl2a,
302 Bunqnl2a,
303 Buutnl2a,
304 Fnomnl22,
305 Fvlbnl22,
306 Handnl2a,
307 Ingbnl2a,
308 Knabnl2h,
309 Mllenl2a,
310 Moyonl21,
311 Nnbanl2g,
312 Ntsbdeb1,
313 Rabonl2u,
314 Rbrbnl21,
315 Revoie23,
316 Revolt21,
317 Snsbnl2a,
318 Trionl2u,
319 Unknown(String),
321}
322impl SetupAttemptPaymentMethodDetailsIdealBic {
323 pub fn as_str(&self) -> &str {
324 use SetupAttemptPaymentMethodDetailsIdealBic::*;
325 match self {
326 Abnanl2a => "ABNANL2A",
327 Asnbnl21 => "ASNBNL21",
328 Bitsnl2a => "BITSNL2A",
329 Bunqnl2a => "BUNQNL2A",
330 Buutnl2a => "BUUTNL2A",
331 Fnomnl22 => "FNOMNL22",
332 Fvlbnl22 => "FVLBNL22",
333 Handnl2a => "HANDNL2A",
334 Ingbnl2a => "INGBNL2A",
335 Knabnl2h => "KNABNL2H",
336 Mllenl2a => "MLLENL2A",
337 Moyonl21 => "MOYONL21",
338 Nnbanl2g => "NNBANL2G",
339 Ntsbdeb1 => "NTSBDEB1",
340 Rabonl2u => "RABONL2U",
341 Rbrbnl21 => "RBRBNL21",
342 Revoie23 => "REVOIE23",
343 Revolt21 => "REVOLT21",
344 Snsbnl2a => "SNSBNL2A",
345 Trionl2u => "TRIONL2U",
346 Unknown(v) => v,
347 }
348 }
349}
350
351impl std::str::FromStr for SetupAttemptPaymentMethodDetailsIdealBic {
352 type Err = std::convert::Infallible;
353 fn from_str(s: &str) -> Result<Self, Self::Err> {
354 use SetupAttemptPaymentMethodDetailsIdealBic::*;
355 match s {
356 "ABNANL2A" => Ok(Abnanl2a),
357 "ASNBNL21" => Ok(Asnbnl21),
358 "BITSNL2A" => Ok(Bitsnl2a),
359 "BUNQNL2A" => Ok(Bunqnl2a),
360 "BUUTNL2A" => Ok(Buutnl2a),
361 "FNOMNL22" => Ok(Fnomnl22),
362 "FVLBNL22" => Ok(Fvlbnl22),
363 "HANDNL2A" => Ok(Handnl2a),
364 "INGBNL2A" => Ok(Ingbnl2a),
365 "KNABNL2H" => Ok(Knabnl2h),
366 "MLLENL2A" => Ok(Mllenl2a),
367 "MOYONL21" => Ok(Moyonl21),
368 "NNBANL2G" => Ok(Nnbanl2g),
369 "NTSBDEB1" => Ok(Ntsbdeb1),
370 "RABONL2U" => Ok(Rabonl2u),
371 "RBRBNL21" => Ok(Rbrbnl21),
372 "REVOIE23" => Ok(Revoie23),
373 "REVOLT21" => Ok(Revolt21),
374 "SNSBNL2A" => Ok(Snsbnl2a),
375 "TRIONL2U" => Ok(Trionl2u),
376 v => {
377 tracing::warn!(
378 "Unknown value '{}' for enum '{}'",
379 v,
380 "SetupAttemptPaymentMethodDetailsIdealBic"
381 );
382 Ok(Unknown(v.to_owned()))
383 }
384 }
385 }
386}
387impl std::fmt::Display for SetupAttemptPaymentMethodDetailsIdealBic {
388 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
389 f.write_str(self.as_str())
390 }
391}
392
393impl std::fmt::Debug for SetupAttemptPaymentMethodDetailsIdealBic {
394 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
395 f.write_str(self.as_str())
396 }
397}
398#[cfg(feature = "serialize")]
399impl serde::Serialize for SetupAttemptPaymentMethodDetailsIdealBic {
400 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
401 where
402 S: serde::Serializer,
403 {
404 serializer.serialize_str(self.as_str())
405 }
406}
407impl miniserde::Deserialize for SetupAttemptPaymentMethodDetailsIdealBic {
408 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
409 crate::Place::new(out)
410 }
411}
412
413impl miniserde::de::Visitor for crate::Place<SetupAttemptPaymentMethodDetailsIdealBic> {
414 fn string(&mut self, s: &str) -> miniserde::Result<()> {
415 use std::str::FromStr;
416 self.out = Some(SetupAttemptPaymentMethodDetailsIdealBic::from_str(s).expect("infallible"));
417 Ok(())
418 }
419}
420
421stripe_types::impl_from_val_with_from_str!(SetupAttemptPaymentMethodDetailsIdealBic);
422#[cfg(feature = "deserialize")]
423impl<'de> serde::Deserialize<'de> for SetupAttemptPaymentMethodDetailsIdealBic {
424 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
425 use std::str::FromStr;
426 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
427 Ok(Self::from_str(&s).expect("infallible"))
428 }
429}