stripe_shared/
payment_method_ideal.rs

1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct PaymentMethodIdeal {
5    /// The customer's bank, if provided.
6    /// Can be one of `abn_amro`, `asn_bank`, `bunq`, `buut`, `handelsbanken`, `ing`, `knab`, `moneyou`, `n26`, `nn`, `rabobank`, `regiobank`, `revolut`, `sns_bank`, `triodos_bank`, `van_lanschot`, or `yoursafe`.
7    pub bank: Option<PaymentMethodIdealBank>,
8    /// The Bank Identifier Code of the customer's bank, if the bank was provided.
9    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/// The customer's bank, if provided.
110/// Can be one of `abn_amro`, `asn_bank`, `bunq`, `buut`, `handelsbanken`, `ing`, `knab`, `moneyou`, `n26`, `nn`, `rabobank`, `regiobank`, `revolut`, `sns_bank`, `triodos_bank`, `van_lanschot`, or `yoursafe`.
111#[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    /// An unrecognized value from Stripe. Should not be used as a request parameter.
132    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/// The Bank Identifier Code of the customer's bank, if the bank was provided.
230#[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    /// An unrecognized value from Stripe. Should not be used as a request parameter.
252    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}