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::{make_place, Deserialize, Result};
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
60 _ => <dyn Visitor>::ignore(),
61 })
62 }
63
64 fn deser_default() -> Self {
65 Self { bank: Deserialize::default(), bic: Deserialize::default() }
66 }
67
68 fn take_out(&mut self) -> Option<Self::Out> {
69 let (Some(bank), Some(bic)) = (self.bank.take(), self.bic.take()) else {
70 return None;
71 };
72 Some(Self::Out { bank, bic })
73 }
74 }
75
76 impl<'a> Map for Builder<'a> {
77 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
78 self.builder.key(k)
79 }
80
81 fn finish(&mut self) -> Result<()> {
82 *self.out = self.builder.take_out();
83 Ok(())
84 }
85 }
86
87 impl ObjectDeser for PaymentMethodIdeal {
88 type Builder = PaymentMethodIdealBuilder;
89 }
90
91 impl FromValueOpt for PaymentMethodIdeal {
92 fn from_value(v: Value) -> Option<Self> {
93 let Value::Object(obj) = v else {
94 return None;
95 };
96 let mut b = PaymentMethodIdealBuilder::deser_default();
97 for (k, v) in obj {
98 match k.as_str() {
99 "bank" => b.bank = FromValueOpt::from_value(v),
100 "bic" => b.bic = FromValueOpt::from_value(v),
101
102 _ => {}
103 }
104 }
105 b.take_out()
106 }
107 }
108};
109#[derive(Clone, Eq, PartialEq)]
112#[non_exhaustive]
113pub enum PaymentMethodIdealBank {
114 AbnAmro,
115 AsnBank,
116 Bunq,
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 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 "handelsbanken" => Ok(Handelsbanken),
167 "ing" => Ok(Ing),
168 "knab" => Ok(Knab),
169 "moneyou" => Ok(Moneyou),
170 "n26" => Ok(N26),
171 "nn" => Ok(Nn),
172 "rabobank" => Ok(Rabobank),
173 "regiobank" => Ok(Regiobank),
174 "revolut" => Ok(Revolut),
175 "sns_bank" => Ok(SnsBank),
176 "triodos_bank" => Ok(TriodosBank),
177 "van_lanschot" => Ok(VanLanschot),
178 "yoursafe" => Ok(Yoursafe),
179 v => Ok(Unknown(v.to_owned())),
180 }
181 }
182}
183impl std::fmt::Display for PaymentMethodIdealBank {
184 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
185 f.write_str(self.as_str())
186 }
187}
188
189impl std::fmt::Debug for PaymentMethodIdealBank {
190 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
191 f.write_str(self.as_str())
192 }
193}
194#[cfg(feature = "serialize")]
195impl serde::Serialize for PaymentMethodIdealBank {
196 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
197 where
198 S: serde::Serializer,
199 {
200 serializer.serialize_str(self.as_str())
201 }
202}
203impl miniserde::Deserialize for PaymentMethodIdealBank {
204 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
205 crate::Place::new(out)
206 }
207}
208
209impl miniserde::de::Visitor for crate::Place<PaymentMethodIdealBank> {
210 fn string(&mut self, s: &str) -> miniserde::Result<()> {
211 use std::str::FromStr;
212 self.out = Some(PaymentMethodIdealBank::from_str(s).unwrap());
213 Ok(())
214 }
215}
216
217stripe_types::impl_from_val_with_from_str!(PaymentMethodIdealBank);
218#[cfg(feature = "deserialize")]
219impl<'de> serde::Deserialize<'de> for PaymentMethodIdealBank {
220 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
221 use std::str::FromStr;
222 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
223 Ok(Self::from_str(&s).unwrap())
224 }
225}
226#[derive(Clone, Eq, PartialEq)]
228#[non_exhaustive]
229pub enum PaymentMethodIdealBic {
230 Abnanl2a,
231 Asnbnl21,
232 Bitsnl2a,
233 Bunqnl2a,
234 Fvlbnl22,
235 Handnl2a,
236 Ingbnl2a,
237 Knabnl2h,
238 Moyonl21,
239 Nnbanl2g,
240 Ntsbdeb1,
241 Rabonl2u,
242 Rbrbnl21,
243 Revoie23,
244 Revolt21,
245 Snsbnl2a,
246 Trionl2u,
247 Unknown(String),
249}
250impl PaymentMethodIdealBic {
251 pub fn as_str(&self) -> &str {
252 use PaymentMethodIdealBic::*;
253 match self {
254 Abnanl2a => "ABNANL2A",
255 Asnbnl21 => "ASNBNL21",
256 Bitsnl2a => "BITSNL2A",
257 Bunqnl2a => "BUNQNL2A",
258 Fvlbnl22 => "FVLBNL22",
259 Handnl2a => "HANDNL2A",
260 Ingbnl2a => "INGBNL2A",
261 Knabnl2h => "KNABNL2H",
262 Moyonl21 => "MOYONL21",
263 Nnbanl2g => "NNBANL2G",
264 Ntsbdeb1 => "NTSBDEB1",
265 Rabonl2u => "RABONL2U",
266 Rbrbnl21 => "RBRBNL21",
267 Revoie23 => "REVOIE23",
268 Revolt21 => "REVOLT21",
269 Snsbnl2a => "SNSBNL2A",
270 Trionl2u => "TRIONL2U",
271 Unknown(v) => v,
272 }
273 }
274}
275
276impl std::str::FromStr for PaymentMethodIdealBic {
277 type Err = std::convert::Infallible;
278 fn from_str(s: &str) -> Result<Self, Self::Err> {
279 use PaymentMethodIdealBic::*;
280 match s {
281 "ABNANL2A" => Ok(Abnanl2a),
282 "ASNBNL21" => Ok(Asnbnl21),
283 "BITSNL2A" => Ok(Bitsnl2a),
284 "BUNQNL2A" => Ok(Bunqnl2a),
285 "FVLBNL22" => Ok(Fvlbnl22),
286 "HANDNL2A" => Ok(Handnl2a),
287 "INGBNL2A" => Ok(Ingbnl2a),
288 "KNABNL2H" => Ok(Knabnl2h),
289 "MOYONL21" => Ok(Moyonl21),
290 "NNBANL2G" => Ok(Nnbanl2g),
291 "NTSBDEB1" => Ok(Ntsbdeb1),
292 "RABONL2U" => Ok(Rabonl2u),
293 "RBRBNL21" => Ok(Rbrbnl21),
294 "REVOIE23" => Ok(Revoie23),
295 "REVOLT21" => Ok(Revolt21),
296 "SNSBNL2A" => Ok(Snsbnl2a),
297 "TRIONL2U" => Ok(Trionl2u),
298 v => Ok(Unknown(v.to_owned())),
299 }
300 }
301}
302impl std::fmt::Display for PaymentMethodIdealBic {
303 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
304 f.write_str(self.as_str())
305 }
306}
307
308impl std::fmt::Debug for PaymentMethodIdealBic {
309 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
310 f.write_str(self.as_str())
311 }
312}
313#[cfg(feature = "serialize")]
314impl serde::Serialize for PaymentMethodIdealBic {
315 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
316 where
317 S: serde::Serializer,
318 {
319 serializer.serialize_str(self.as_str())
320 }
321}
322impl miniserde::Deserialize for PaymentMethodIdealBic {
323 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
324 crate::Place::new(out)
325 }
326}
327
328impl miniserde::de::Visitor for crate::Place<PaymentMethodIdealBic> {
329 fn string(&mut self, s: &str) -> miniserde::Result<()> {
330 use std::str::FromStr;
331 self.out = Some(PaymentMethodIdealBic::from_str(s).unwrap());
332 Ok(())
333 }
334}
335
336stripe_types::impl_from_val_with_from_str!(PaymentMethodIdealBic);
337#[cfg(feature = "deserialize")]
338impl<'de> serde::Deserialize<'de> for PaymentMethodIdealBic {
339 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
340 use std::str::FromStr;
341 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
342 Ok(Self::from_str(&s).unwrap())
343 }
344}