stripe_shared/
deleted_payment_source.rs1#[derive(Clone, Debug)]
3#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
4#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5#[cfg_attr(any(feature = "deserialize", feature = "serialize"), serde(tag = "object"))]
6pub enum DeletedPaymentSource {
7 #[cfg_attr(any(feature = "deserialize", feature = "serialize"), serde(rename = "bank_account"))]
8 DeletedBankAccount(stripe_shared::DeletedBankAccount),
9 #[cfg_attr(any(feature = "deserialize", feature = "serialize"), serde(rename = "card"))]
10 DeletedCard(stripe_shared::DeletedCard),
11}
12
13#[derive(Default)]
14pub struct DeletedPaymentSourceBuilder {
15 inner: stripe_types::miniserde_helpers::ObjectBuilderInner,
16}
17
18const _: () = {
19 use miniserde::de::{Map, Visitor};
20 use miniserde::json::Value;
21 use miniserde::{Deserialize, Result, make_place};
22 use stripe_types::MapBuilder;
23 use stripe_types::miniserde_helpers::FromValueOpt;
24
25 use super::*;
26
27 make_place!(Place);
28
29 struct Builder<'a> {
30 out: &'a mut Option<DeletedPaymentSource>,
31 builder: DeletedPaymentSourceBuilder,
32 }
33
34 impl Deserialize for DeletedPaymentSource {
35 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
36 Place::new(out)
37 }
38 }
39
40 impl Visitor for Place<DeletedPaymentSource> {
41 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
42 Ok(Box::new(Builder { out: &mut self.out, builder: Default::default() }))
43 }
44 }
45
46 impl Map for Builder<'_> {
47 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
48 self.builder.key(k)
49 }
50
51 fn finish(&mut self) -> Result<()> {
52 *self.out = self.builder.take_out();
53 Ok(())
54 }
55 }
56
57 impl MapBuilder for DeletedPaymentSourceBuilder {
58 type Out = DeletedPaymentSource;
59 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
60 self.inner.key_inner(k)
61 }
62
63 fn deser_default() -> Self {
64 Self::default()
65 }
66
67 fn take_out(&mut self) -> Option<Self::Out> {
68 let (k, o) = self.inner.finish_inner()?;
69 DeletedPaymentSource::construct(&k, o)
70 }
71 }
72
73 impl stripe_types::ObjectDeser for DeletedPaymentSource {
74 type Builder = DeletedPaymentSourceBuilder;
75 }
76 impl DeletedPaymentSource {
77 fn construct(key: &str, o: miniserde::json::Object) -> Option<Self> {
78 Some(match key {
79 "bank_account" => {
80 Self::DeletedBankAccount(FromValueOpt::from_value(Value::Object(o))?)
81 }
82 "card" => Self::DeletedCard(FromValueOpt::from_value(Value::Object(o))?),
83
84 _ => return None,
85 })
86 }
87 }
88
89 impl FromValueOpt for DeletedPaymentSource {
90 fn from_value(v: Value) -> Option<Self> {
91 let (typ, obj) = stripe_types::miniserde_helpers::extract_object_discr(v)?;
92 Self::construct(&typ, obj)
93 }
94 }
95};
96
97impl stripe_types::Object for DeletedPaymentSource {
98 type Id = smol_str::SmolStr;
99 fn id(&self) -> &Self::Id {
100 match self {
101 Self::DeletedBankAccount(v) => v.id.inner(),
102 Self::DeletedCard(v) => v.id.inner(),
103 }
104 }
105
106 fn into_id(self) -> Self::Id {
107 match self {
108 Self::DeletedBankAccount(v) => v.id.into_inner(),
109 Self::DeletedCard(v) => v.id.into_inner(),
110 }
111 }
112}