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`, `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<'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/// The customer's bank, if provided.
110/// Can be one of `abn_amro`, `asn_bank`, `bunq`, `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    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            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/// The Bank Identifier Code of the customer's bank, if the bank was provided.
227#[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    /// An unrecognized value from Stripe. Should not be used as a request parameter.
248    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}