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