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