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