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 Handelsbanken,
117 Ing,
118 Knab,
119 Moneyou,
120 N26,
121 Nn,
122 Rabobank,
123 Regiobank,
124 Revolut,
125 SnsBank,
126 TriodosBank,
127 VanLanschot,
128 Yoursafe,
129 Unknown(String),
131}
132impl PaymentMethodIdealBank {
133 pub fn as_str(&self) -> &str {
134 use PaymentMethodIdealBank::*;
135 match self {
136 AbnAmro => "abn_amro",
137 AsnBank => "asn_bank",
138 Bunq => "bunq",
139 Buut => "buut",
140 Handelsbanken => "handelsbanken",
141 Ing => "ing",
142 Knab => "knab",
143 Moneyou => "moneyou",
144 N26 => "n26",
145 Nn => "nn",
146 Rabobank => "rabobank",
147 Regiobank => "regiobank",
148 Revolut => "revolut",
149 SnsBank => "sns_bank",
150 TriodosBank => "triodos_bank",
151 VanLanschot => "van_lanschot",
152 Yoursafe => "yoursafe",
153 Unknown(v) => v,
154 }
155 }
156}
157
158impl std::str::FromStr for PaymentMethodIdealBank {
159 type Err = std::convert::Infallible;
160 fn from_str(s: &str) -> Result<Self, Self::Err> {
161 use PaymentMethodIdealBank::*;
162 match s {
163 "abn_amro" => Ok(AbnAmro),
164 "asn_bank" => Ok(AsnBank),
165 "bunq" => Ok(Bunq),
166 "buut" => Ok(Buut),
167 "handelsbanken" => Ok(Handelsbanken),
168 "ing" => Ok(Ing),
169 "knab" => Ok(Knab),
170 "moneyou" => Ok(Moneyou),
171 "n26" => Ok(N26),
172 "nn" => Ok(Nn),
173 "rabobank" => Ok(Rabobank),
174 "regiobank" => Ok(Regiobank),
175 "revolut" => Ok(Revolut),
176 "sns_bank" => Ok(SnsBank),
177 "triodos_bank" => Ok(TriodosBank),
178 "van_lanschot" => Ok(VanLanschot),
179 "yoursafe" => Ok(Yoursafe),
180 v => Ok(Unknown(v.to_owned())),
181 }
182 }
183}
184impl std::fmt::Display for PaymentMethodIdealBank {
185 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
186 f.write_str(self.as_str())
187 }
188}
189
190impl std::fmt::Debug for PaymentMethodIdealBank {
191 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
192 f.write_str(self.as_str())
193 }
194}
195#[cfg(feature = "serialize")]
196impl serde::Serialize for PaymentMethodIdealBank {
197 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
198 where
199 S: serde::Serializer,
200 {
201 serializer.serialize_str(self.as_str())
202 }
203}
204impl miniserde::Deserialize for PaymentMethodIdealBank {
205 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
206 crate::Place::new(out)
207 }
208}
209
210impl miniserde::de::Visitor for crate::Place<PaymentMethodIdealBank> {
211 fn string(&mut self, s: &str) -> miniserde::Result<()> {
212 use std::str::FromStr;
213 self.out = Some(PaymentMethodIdealBank::from_str(s).unwrap());
214 Ok(())
215 }
216}
217
218stripe_types::impl_from_val_with_from_str!(PaymentMethodIdealBank);
219#[cfg(feature = "deserialize")]
220impl<'de> serde::Deserialize<'de> for PaymentMethodIdealBank {
221 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
222 use std::str::FromStr;
223 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
224 Ok(Self::from_str(&s).unwrap())
225 }
226}
227#[derive(Clone, Eq, PartialEq)]
229#[non_exhaustive]
230pub enum PaymentMethodIdealBic {
231 Abnanl2a,
232 Asnbnl21,
233 Bitsnl2a,
234 Bunqnl2a,
235 Buutnl2a,
236 Fvlbnl22,
237 Handnl2a,
238 Ingbnl2a,
239 Knabnl2h,
240 Moyonl21,
241 Nnbanl2g,
242 Ntsbdeb1,
243 Rabonl2u,
244 Rbrbnl21,
245 Revoie23,
246 Revolt21,
247 Snsbnl2a,
248 Trionl2u,
249 Unknown(String),
251}
252impl PaymentMethodIdealBic {
253 pub fn as_str(&self) -> &str {
254 use PaymentMethodIdealBic::*;
255 match self {
256 Abnanl2a => "ABNANL2A",
257 Asnbnl21 => "ASNBNL21",
258 Bitsnl2a => "BITSNL2A",
259 Bunqnl2a => "BUNQNL2A",
260 Buutnl2a => "BUUTNL2A",
261 Fvlbnl22 => "FVLBNL22",
262 Handnl2a => "HANDNL2A",
263 Ingbnl2a => "INGBNL2A",
264 Knabnl2h => "KNABNL2H",
265 Moyonl21 => "MOYONL21",
266 Nnbanl2g => "NNBANL2G",
267 Ntsbdeb1 => "NTSBDEB1",
268 Rabonl2u => "RABONL2U",
269 Rbrbnl21 => "RBRBNL21",
270 Revoie23 => "REVOIE23",
271 Revolt21 => "REVOLT21",
272 Snsbnl2a => "SNSBNL2A",
273 Trionl2u => "TRIONL2U",
274 Unknown(v) => v,
275 }
276 }
277}
278
279impl std::str::FromStr for PaymentMethodIdealBic {
280 type Err = std::convert::Infallible;
281 fn from_str(s: &str) -> Result<Self, Self::Err> {
282 use PaymentMethodIdealBic::*;
283 match s {
284 "ABNANL2A" => Ok(Abnanl2a),
285 "ASNBNL21" => Ok(Asnbnl21),
286 "BITSNL2A" => Ok(Bitsnl2a),
287 "BUNQNL2A" => Ok(Bunqnl2a),
288 "BUUTNL2A" => Ok(Buutnl2a),
289 "FVLBNL22" => Ok(Fvlbnl22),
290 "HANDNL2A" => Ok(Handnl2a),
291 "INGBNL2A" => Ok(Ingbnl2a),
292 "KNABNL2H" => Ok(Knabnl2h),
293 "MOYONL21" => Ok(Moyonl21),
294 "NNBANL2G" => Ok(Nnbanl2g),
295 "NTSBDEB1" => Ok(Ntsbdeb1),
296 "RABONL2U" => Ok(Rabonl2u),
297 "RBRBNL21" => Ok(Rbrbnl21),
298 "REVOIE23" => Ok(Revoie23),
299 "REVOLT21" => Ok(Revolt21),
300 "SNSBNL2A" => Ok(Snsbnl2a),
301 "TRIONL2U" => Ok(Trionl2u),
302 v => Ok(Unknown(v.to_owned())),
303 }
304 }
305}
306impl std::fmt::Display for PaymentMethodIdealBic {
307 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
308 f.write_str(self.as_str())
309 }
310}
311
312impl std::fmt::Debug for PaymentMethodIdealBic {
313 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
314 f.write_str(self.as_str())
315 }
316}
317#[cfg(feature = "serialize")]
318impl serde::Serialize for PaymentMethodIdealBic {
319 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
320 where
321 S: serde::Serializer,
322 {
323 serializer.serialize_str(self.as_str())
324 }
325}
326impl miniserde::Deserialize for PaymentMethodIdealBic {
327 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
328 crate::Place::new(out)
329 }
330}
331
332impl miniserde::de::Visitor for crate::Place<PaymentMethodIdealBic> {
333 fn string(&mut self, s: &str) -> miniserde::Result<()> {
334 use std::str::FromStr;
335 self.out = Some(PaymentMethodIdealBic::from_str(s).unwrap());
336 Ok(())
337 }
338}
339
340stripe_types::impl_from_val_with_from_str!(PaymentMethodIdealBic);
341#[cfg(feature = "deserialize")]
342impl<'de> serde::Deserialize<'de> for PaymentMethodIdealBic {
343 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
344 use std::str::FromStr;
345 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
346 Ok(Self::from_str(&s).unwrap())
347 }
348}