1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct PaymentMethodP24 {
5 pub bank: Option<PaymentMethodP24Bank>,
7}
8#[doc(hidden)]
9pub struct PaymentMethodP24Builder {
10 bank: Option<Option<PaymentMethodP24Bank>>,
11}
12
13#[allow(
14 unused_variables,
15 irrefutable_let_patterns,
16 clippy::let_unit_value,
17 clippy::match_single_binding,
18 clippy::single_match
19)]
20const _: () = {
21 use miniserde::de::{Map, Visitor};
22 use miniserde::json::Value;
23 use miniserde::{Deserialize, Result, make_place};
24 use stripe_types::miniserde_helpers::FromValueOpt;
25 use stripe_types::{MapBuilder, ObjectDeser};
26
27 make_place!(Place);
28
29 impl Deserialize for PaymentMethodP24 {
30 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
31 Place::new(out)
32 }
33 }
34
35 struct Builder<'a> {
36 out: &'a mut Option<PaymentMethodP24>,
37 builder: PaymentMethodP24Builder,
38 }
39
40 impl Visitor for Place<PaymentMethodP24> {
41 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
42 Ok(Box::new(Builder {
43 out: &mut self.out,
44 builder: PaymentMethodP24Builder::deser_default(),
45 }))
46 }
47 }
48
49 impl MapBuilder for PaymentMethodP24Builder {
50 type Out = PaymentMethodP24;
51 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
52 Ok(match k {
53 "bank" => Deserialize::begin(&mut self.bank),
54 _ => <dyn Visitor>::ignore(),
55 })
56 }
57
58 fn deser_default() -> Self {
59 Self { bank: Deserialize::default() }
60 }
61
62 fn take_out(&mut self) -> Option<Self::Out> {
63 let (Some(bank),) = (self.bank.take(),) else {
64 return None;
65 };
66 Some(Self::Out { bank })
67 }
68 }
69
70 impl Map for Builder<'_> {
71 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
72 self.builder.key(k)
73 }
74
75 fn finish(&mut self) -> Result<()> {
76 *self.out = self.builder.take_out();
77 Ok(())
78 }
79 }
80
81 impl ObjectDeser for PaymentMethodP24 {
82 type Builder = PaymentMethodP24Builder;
83 }
84
85 impl FromValueOpt for PaymentMethodP24 {
86 fn from_value(v: Value) -> Option<Self> {
87 let Value::Object(obj) = v else {
88 return None;
89 };
90 let mut b = PaymentMethodP24Builder::deser_default();
91 for (k, v) in obj {
92 match k.as_str() {
93 "bank" => b.bank = FromValueOpt::from_value(v),
94 _ => {}
95 }
96 }
97 b.take_out()
98 }
99 }
100};
101#[derive(Clone, Eq, PartialEq)]
103#[non_exhaustive]
104pub enum PaymentMethodP24Bank {
105 AliorBank,
106 BankMillennium,
107 BankNowyBfgSa,
108 BankPekaoSa,
109 BankiSpbdzielcze,
110 Blik,
111 BnpParibas,
112 Boz,
113 CitiHandlowy,
114 CreditAgricole,
115 Envelobank,
116 EtransferPocztowy24,
117 GetinBank,
118 Ideabank,
119 Ing,
120 Inteligo,
121 MbankMtransfer,
122 NestPrzelew,
123 NoblePay,
124 PbacZIpko,
125 PlusBank,
126 SantanderPrzelew24,
127 TmobileUsbugiBankowe,
128 ToyotaBank,
129 Velobank,
130 VolkswagenBank,
131 Unknown(String),
133}
134impl PaymentMethodP24Bank {
135 pub fn as_str(&self) -> &str {
136 use PaymentMethodP24Bank::*;
137 match self {
138 AliorBank => "alior_bank",
139 BankMillennium => "bank_millennium",
140 BankNowyBfgSa => "bank_nowy_bfg_sa",
141 BankPekaoSa => "bank_pekao_sa",
142 BankiSpbdzielcze => "banki_spbdzielcze",
143 Blik => "blik",
144 BnpParibas => "bnp_paribas",
145 Boz => "boz",
146 CitiHandlowy => "citi_handlowy",
147 CreditAgricole => "credit_agricole",
148 Envelobank => "envelobank",
149 EtransferPocztowy24 => "etransfer_pocztowy24",
150 GetinBank => "getin_bank",
151 Ideabank => "ideabank",
152 Ing => "ing",
153 Inteligo => "inteligo",
154 MbankMtransfer => "mbank_mtransfer",
155 NestPrzelew => "nest_przelew",
156 NoblePay => "noble_pay",
157 PbacZIpko => "pbac_z_ipko",
158 PlusBank => "plus_bank",
159 SantanderPrzelew24 => "santander_przelew24",
160 TmobileUsbugiBankowe => "tmobile_usbugi_bankowe",
161 ToyotaBank => "toyota_bank",
162 Velobank => "velobank",
163 VolkswagenBank => "volkswagen_bank",
164 Unknown(v) => v,
165 }
166 }
167}
168
169impl std::str::FromStr for PaymentMethodP24Bank {
170 type Err = std::convert::Infallible;
171 fn from_str(s: &str) -> Result<Self, Self::Err> {
172 use PaymentMethodP24Bank::*;
173 match s {
174 "alior_bank" => Ok(AliorBank),
175 "bank_millennium" => Ok(BankMillennium),
176 "bank_nowy_bfg_sa" => Ok(BankNowyBfgSa),
177 "bank_pekao_sa" => Ok(BankPekaoSa),
178 "banki_spbdzielcze" => Ok(BankiSpbdzielcze),
179 "blik" => Ok(Blik),
180 "bnp_paribas" => Ok(BnpParibas),
181 "boz" => Ok(Boz),
182 "citi_handlowy" => Ok(CitiHandlowy),
183 "credit_agricole" => Ok(CreditAgricole),
184 "envelobank" => Ok(Envelobank),
185 "etransfer_pocztowy24" => Ok(EtransferPocztowy24),
186 "getin_bank" => Ok(GetinBank),
187 "ideabank" => Ok(Ideabank),
188 "ing" => Ok(Ing),
189 "inteligo" => Ok(Inteligo),
190 "mbank_mtransfer" => Ok(MbankMtransfer),
191 "nest_przelew" => Ok(NestPrzelew),
192 "noble_pay" => Ok(NoblePay),
193 "pbac_z_ipko" => Ok(PbacZIpko),
194 "plus_bank" => Ok(PlusBank),
195 "santander_przelew24" => Ok(SantanderPrzelew24),
196 "tmobile_usbugi_bankowe" => Ok(TmobileUsbugiBankowe),
197 "toyota_bank" => Ok(ToyotaBank),
198 "velobank" => Ok(Velobank),
199 "volkswagen_bank" => Ok(VolkswagenBank),
200 v => Ok(Unknown(v.to_owned())),
201 }
202 }
203}
204impl std::fmt::Display for PaymentMethodP24Bank {
205 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
206 f.write_str(self.as_str())
207 }
208}
209
210impl std::fmt::Debug for PaymentMethodP24Bank {
211 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
212 f.write_str(self.as_str())
213 }
214}
215#[cfg(feature = "serialize")]
216impl serde::Serialize for PaymentMethodP24Bank {
217 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
218 where
219 S: serde::Serializer,
220 {
221 serializer.serialize_str(self.as_str())
222 }
223}
224impl miniserde::Deserialize for PaymentMethodP24Bank {
225 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
226 crate::Place::new(out)
227 }
228}
229
230impl miniserde::de::Visitor for crate::Place<PaymentMethodP24Bank> {
231 fn string(&mut self, s: &str) -> miniserde::Result<()> {
232 use std::str::FromStr;
233 self.out = Some(PaymentMethodP24Bank::from_str(s).unwrap());
234 Ok(())
235 }
236}
237
238stripe_types::impl_from_val_with_from_str!(PaymentMethodP24Bank);
239#[cfg(feature = "deserialize")]
240impl<'de> serde::Deserialize<'de> for PaymentMethodP24Bank {
241 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
242 use std::str::FromStr;
243 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
244 Ok(Self::from_str(&s).unwrap())
245 }
246}