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`, `finom`, `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::{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/// The customer's bank, if provided.
108/// Can be one of `abn_amro`, `asn_bank`, `bunq`, `buut`, `finom`, `handelsbanken`, `ing`, `knab`, `moneyou`, `n26`, `nn`, `rabobank`, `regiobank`, `revolut`, `sns_bank`, `triodos_bank`, `van_lanschot`, or `yoursafe`.
109#[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    /// An unrecognized value from Stripe. Should not be used as a request parameter.
131    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/// The Bank Identifier Code of the customer's bank, if the bank was provided.
231#[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    /// An unrecognized value from Stripe. Should not be used as a request parameter.
254    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}