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::{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`, `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    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    /// An unrecognized value from Stripe. Should not be used as a request parameter.
130    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/// The Bank Identifier Code of the customer's bank, if the bank was provided.
228#[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    /// An unrecognized value from Stripe. Should not be used as a request parameter.
250    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}