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