1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct PaymentIntentPaymentMethodOptionsMandateOptionsPayto {
5 pub amount: Option<i64>,
7 pub amount_type: Option<PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType>,
11 pub end_date: Option<String>,
13 pub payment_schedule:
15 Option<PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule>,
16 pub payments_per_period: Option<i64>,
20 pub purpose: Option<PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose>,
22}
23#[doc(hidden)]
24pub struct PaymentIntentPaymentMethodOptionsMandateOptionsPaytoBuilder {
25 amount: Option<Option<i64>>,
26 amount_type: Option<Option<PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType>>,
27 end_date: Option<Option<String>>,
28 payment_schedule:
29 Option<Option<PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule>>,
30 payments_per_period: Option<Option<i64>>,
31 purpose: Option<Option<PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose>>,
32}
33
34#[allow(
35 unused_variables,
36 irrefutable_let_patterns,
37 clippy::let_unit_value,
38 clippy::match_single_binding,
39 clippy::single_match
40)]
41const _: () = {
42 use miniserde::de::{Map, Visitor};
43 use miniserde::json::Value;
44 use miniserde::{Deserialize, Result, make_place};
45 use stripe_types::miniserde_helpers::FromValueOpt;
46 use stripe_types::{MapBuilder, ObjectDeser};
47
48 make_place!(Place);
49
50 impl Deserialize for PaymentIntentPaymentMethodOptionsMandateOptionsPayto {
51 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
52 Place::new(out)
53 }
54 }
55
56 struct Builder<'a> {
57 out: &'a mut Option<PaymentIntentPaymentMethodOptionsMandateOptionsPayto>,
58 builder: PaymentIntentPaymentMethodOptionsMandateOptionsPaytoBuilder,
59 }
60
61 impl Visitor for Place<PaymentIntentPaymentMethodOptionsMandateOptionsPayto> {
62 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
63 Ok(Box::new(Builder {
64 out: &mut self.out,
65 builder: PaymentIntentPaymentMethodOptionsMandateOptionsPaytoBuilder::deser_default(
66 ),
67 }))
68 }
69 }
70
71 impl MapBuilder for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoBuilder {
72 type Out = PaymentIntentPaymentMethodOptionsMandateOptionsPayto;
73 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
74 Ok(match k {
75 "amount" => Deserialize::begin(&mut self.amount),
76 "amount_type" => Deserialize::begin(&mut self.amount_type),
77 "end_date" => Deserialize::begin(&mut self.end_date),
78 "payment_schedule" => Deserialize::begin(&mut self.payment_schedule),
79 "payments_per_period" => Deserialize::begin(&mut self.payments_per_period),
80 "purpose" => Deserialize::begin(&mut self.purpose),
81 _ => <dyn Visitor>::ignore(),
82 })
83 }
84
85 fn deser_default() -> Self {
86 Self {
87 amount: Deserialize::default(),
88 amount_type: Deserialize::default(),
89 end_date: Deserialize::default(),
90 payment_schedule: Deserialize::default(),
91 payments_per_period: Deserialize::default(),
92 purpose: Deserialize::default(),
93 }
94 }
95
96 fn take_out(&mut self) -> Option<Self::Out> {
97 let (
98 Some(amount),
99 Some(amount_type),
100 Some(end_date),
101 Some(payment_schedule),
102 Some(payments_per_period),
103 Some(purpose),
104 ) = (
105 self.amount,
106 self.amount_type.take(),
107 self.end_date.take(),
108 self.payment_schedule.take(),
109 self.payments_per_period,
110 self.purpose.take(),
111 )
112 else {
113 return None;
114 };
115 Some(Self::Out {
116 amount,
117 amount_type,
118 end_date,
119 payment_schedule,
120 payments_per_period,
121 purpose,
122 })
123 }
124 }
125
126 impl Map for Builder<'_> {
127 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
128 self.builder.key(k)
129 }
130
131 fn finish(&mut self) -> Result<()> {
132 *self.out = self.builder.take_out();
133 Ok(())
134 }
135 }
136
137 impl ObjectDeser for PaymentIntentPaymentMethodOptionsMandateOptionsPayto {
138 type Builder = PaymentIntentPaymentMethodOptionsMandateOptionsPaytoBuilder;
139 }
140
141 impl FromValueOpt for PaymentIntentPaymentMethodOptionsMandateOptionsPayto {
142 fn from_value(v: Value) -> Option<Self> {
143 let Value::Object(obj) = v else {
144 return None;
145 };
146 let mut b =
147 PaymentIntentPaymentMethodOptionsMandateOptionsPaytoBuilder::deser_default();
148 for (k, v) in obj {
149 match k.as_str() {
150 "amount" => b.amount = FromValueOpt::from_value(v),
151 "amount_type" => b.amount_type = FromValueOpt::from_value(v),
152 "end_date" => b.end_date = FromValueOpt::from_value(v),
153 "payment_schedule" => b.payment_schedule = FromValueOpt::from_value(v),
154 "payments_per_period" => b.payments_per_period = FromValueOpt::from_value(v),
155 "purpose" => b.purpose = FromValueOpt::from_value(v),
156 _ => {}
157 }
158 }
159 b.take_out()
160 }
161 }
162};
163#[derive(Clone, Eq, PartialEq)]
167#[non_exhaustive]
168pub enum PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType {
169 Fixed,
170 Maximum,
171 Unknown(String),
173}
174impl PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType {
175 pub fn as_str(&self) -> &str {
176 use PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType::*;
177 match self {
178 Fixed => "fixed",
179 Maximum => "maximum",
180 Unknown(v) => v,
181 }
182 }
183}
184
185impl std::str::FromStr for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType {
186 type Err = std::convert::Infallible;
187 fn from_str(s: &str) -> Result<Self, Self::Err> {
188 use PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType::*;
189 match s {
190 "fixed" => Ok(Fixed),
191 "maximum" => Ok(Maximum),
192 v => {
193 tracing::warn!(
194 "Unknown value '{}' for enum '{}'",
195 v,
196 "PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType"
197 );
198 Ok(Unknown(v.to_owned()))
199 }
200 }
201 }
202}
203impl std::fmt::Display for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType {
204 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
205 f.write_str(self.as_str())
206 }
207}
208
209impl std::fmt::Debug for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType {
210 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
211 f.write_str(self.as_str())
212 }
213}
214#[cfg(feature = "serialize")]
215impl serde::Serialize for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType {
216 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
217 where
218 S: serde::Serializer,
219 {
220 serializer.serialize_str(self.as_str())
221 }
222}
223impl miniserde::Deserialize for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType {
224 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
225 crate::Place::new(out)
226 }
227}
228
229impl miniserde::de::Visitor
230 for crate::Place<PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType>
231{
232 fn string(&mut self, s: &str) -> miniserde::Result<()> {
233 use std::str::FromStr;
234 self.out = Some(
235 PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType::from_str(s)
236 .expect("infallible"),
237 );
238 Ok(())
239 }
240}
241
242stripe_types::impl_from_val_with_from_str!(
243 PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType
244);
245#[cfg(feature = "deserialize")]
246impl<'de> serde::Deserialize<'de>
247 for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoAmountType
248{
249 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
250 use std::str::FromStr;
251 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
252 Ok(Self::from_str(&s).expect("infallible"))
253 }
254}
255#[derive(Clone, Eq, PartialEq)]
257#[non_exhaustive]
258pub enum PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule {
259 Adhoc,
260 Annual,
261 Daily,
262 Fortnightly,
263 Monthly,
264 Quarterly,
265 SemiAnnual,
266 Weekly,
267 Unknown(String),
269}
270impl PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule {
271 pub fn as_str(&self) -> &str {
272 use PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule::*;
273 match self {
274 Adhoc => "adhoc",
275 Annual => "annual",
276 Daily => "daily",
277 Fortnightly => "fortnightly",
278 Monthly => "monthly",
279 Quarterly => "quarterly",
280 SemiAnnual => "semi_annual",
281 Weekly => "weekly",
282 Unknown(v) => v,
283 }
284 }
285}
286
287impl std::str::FromStr for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule {
288 type Err = std::convert::Infallible;
289 fn from_str(s: &str) -> Result<Self, Self::Err> {
290 use PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule::*;
291 match s {
292 "adhoc" => Ok(Adhoc),
293 "annual" => Ok(Annual),
294 "daily" => Ok(Daily),
295 "fortnightly" => Ok(Fortnightly),
296 "monthly" => Ok(Monthly),
297 "quarterly" => Ok(Quarterly),
298 "semi_annual" => Ok(SemiAnnual),
299 "weekly" => Ok(Weekly),
300 v => {
301 tracing::warn!(
302 "Unknown value '{}' for enum '{}'",
303 v,
304 "PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule"
305 );
306 Ok(Unknown(v.to_owned()))
307 }
308 }
309 }
310}
311impl std::fmt::Display for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule {
312 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
313 f.write_str(self.as_str())
314 }
315}
316
317impl std::fmt::Debug for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule {
318 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
319 f.write_str(self.as_str())
320 }
321}
322#[cfg(feature = "serialize")]
323impl serde::Serialize for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule {
324 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
325 where
326 S: serde::Serializer,
327 {
328 serializer.serialize_str(self.as_str())
329 }
330}
331impl miniserde::Deserialize
332 for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule
333{
334 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
335 crate::Place::new(out)
336 }
337}
338
339impl miniserde::de::Visitor
340 for crate::Place<PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule>
341{
342 fn string(&mut self, s: &str) -> miniserde::Result<()> {
343 use std::str::FromStr;
344 self.out = Some(
345 PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule::from_str(s)
346 .expect("infallible"),
347 );
348 Ok(())
349 }
350}
351
352stripe_types::impl_from_val_with_from_str!(
353 PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule
354);
355#[cfg(feature = "deserialize")]
356impl<'de> serde::Deserialize<'de>
357 for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPaymentSchedule
358{
359 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
360 use std::str::FromStr;
361 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
362 Ok(Self::from_str(&s).expect("infallible"))
363 }
364}
365#[derive(Clone, Eq, PartialEq)]
367#[non_exhaustive]
368pub enum PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose {
369 DependantSupport,
370 Government,
371 Loan,
372 Mortgage,
373 Other,
374 Pension,
375 Personal,
376 Retail,
377 Salary,
378 Tax,
379 Utility,
380 Unknown(String),
382}
383impl PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose {
384 pub fn as_str(&self) -> &str {
385 use PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose::*;
386 match self {
387 DependantSupport => "dependant_support",
388 Government => "government",
389 Loan => "loan",
390 Mortgage => "mortgage",
391 Other => "other",
392 Pension => "pension",
393 Personal => "personal",
394 Retail => "retail",
395 Salary => "salary",
396 Tax => "tax",
397 Utility => "utility",
398 Unknown(v) => v,
399 }
400 }
401}
402
403impl std::str::FromStr for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose {
404 type Err = std::convert::Infallible;
405 fn from_str(s: &str) -> Result<Self, Self::Err> {
406 use PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose::*;
407 match s {
408 "dependant_support" => Ok(DependantSupport),
409 "government" => Ok(Government),
410 "loan" => Ok(Loan),
411 "mortgage" => Ok(Mortgage),
412 "other" => Ok(Other),
413 "pension" => Ok(Pension),
414 "personal" => Ok(Personal),
415 "retail" => Ok(Retail),
416 "salary" => Ok(Salary),
417 "tax" => Ok(Tax),
418 "utility" => Ok(Utility),
419 v => {
420 tracing::warn!(
421 "Unknown value '{}' for enum '{}'",
422 v,
423 "PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose"
424 );
425 Ok(Unknown(v.to_owned()))
426 }
427 }
428 }
429}
430impl std::fmt::Display for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose {
431 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
432 f.write_str(self.as_str())
433 }
434}
435
436impl std::fmt::Debug for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose {
437 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
438 f.write_str(self.as_str())
439 }
440}
441#[cfg(feature = "serialize")]
442impl serde::Serialize for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose {
443 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
444 where
445 S: serde::Serializer,
446 {
447 serializer.serialize_str(self.as_str())
448 }
449}
450impl miniserde::Deserialize for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose {
451 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
452 crate::Place::new(out)
453 }
454}
455
456impl miniserde::de::Visitor
457 for crate::Place<PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose>
458{
459 fn string(&mut self, s: &str) -> miniserde::Result<()> {
460 use std::str::FromStr;
461 self.out = Some(
462 PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose::from_str(s)
463 .expect("infallible"),
464 );
465 Ok(())
466 }
467}
468
469stripe_types::impl_from_val_with_from_str!(
470 PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose
471);
472#[cfg(feature = "deserialize")]
473impl<'de> serde::Deserialize<'de> for PaymentIntentPaymentMethodOptionsMandateOptionsPaytoPurpose {
474 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
475 use std::str::FromStr;
476 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
477 Ok(Self::from_str(&s).expect("infallible"))
478 }
479}