stripe_shared/
setup_intent_next_action.rs1#[derive(Clone)]
2#[cfg_attr(not(feature = "redact-generated-debug"), derive(Debug))]
3#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
4#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5pub struct SetupIntentNextAction {
6 pub blik_authorize: Option<stripe_shared::PaymentIntentNextActionBlikAuthorize>,
7 pub cashapp_handle_redirect_or_display_qr_code:
8 Option<stripe_shared::PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode>,
9 pub pix_display_qr_code: Option<stripe_shared::SetupIntentNextActionPixDisplayQrCode>,
10 pub redirect_to_url: Option<stripe_shared::SetupIntentNextActionRedirectToUrl>,
11 #[cfg_attr(any(feature = "deserialize", feature = "serialize"), serde(rename = "type"))]
15 pub type_: String,
16 pub upi_handle_redirect_or_display_qr_code:
17 Option<stripe_shared::PaymentIntentNextActionUpiHandleRedirectOrDisplayQrCode>,
18 #[cfg_attr(
21 any(feature = "deserialize", feature = "serialize"),
22 serde(with = "stripe_types::with_serde_json_opt")
23 )]
24 pub use_stripe_sdk: Option<miniserde::json::Value>,
25 pub verify_with_microdeposits:
26 Option<stripe_shared::SetupIntentNextActionVerifyWithMicrodeposits>,
27}
28#[cfg(feature = "redact-generated-debug")]
29impl std::fmt::Debug for SetupIntentNextAction {
30 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
31 f.debug_struct("SetupIntentNextAction").finish_non_exhaustive()
32 }
33}
34#[doc(hidden)]
35pub struct SetupIntentNextActionBuilder {
36 blik_authorize: Option<Option<stripe_shared::PaymentIntentNextActionBlikAuthorize>>,
37 cashapp_handle_redirect_or_display_qr_code:
38 Option<Option<stripe_shared::PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode>>,
39 pix_display_qr_code: Option<Option<stripe_shared::SetupIntentNextActionPixDisplayQrCode>>,
40 redirect_to_url: Option<Option<stripe_shared::SetupIntentNextActionRedirectToUrl>>,
41 type_: Option<String>,
42 upi_handle_redirect_or_display_qr_code:
43 Option<Option<stripe_shared::PaymentIntentNextActionUpiHandleRedirectOrDisplayQrCode>>,
44 use_stripe_sdk: Option<Option<miniserde::json::Value>>,
45 verify_with_microdeposits:
46 Option<Option<stripe_shared::SetupIntentNextActionVerifyWithMicrodeposits>>,
47}
48
49#[allow(
50 unused_variables,
51 irrefutable_let_patterns,
52 clippy::let_unit_value,
53 clippy::match_single_binding,
54 clippy::single_match
55)]
56const _: () = {
57 use miniserde::de::{Map, Visitor};
58 use miniserde::json::Value;
59 use miniserde::{Deserialize, Result, make_place};
60 use stripe_types::miniserde_helpers::FromValueOpt;
61 use stripe_types::{MapBuilder, ObjectDeser};
62
63 make_place!(Place);
64
65 impl Deserialize for SetupIntentNextAction {
66 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
67 Place::new(out)
68 }
69 }
70
71 struct Builder<'a> {
72 out: &'a mut Option<SetupIntentNextAction>,
73 builder: SetupIntentNextActionBuilder,
74 }
75
76 impl Visitor for Place<SetupIntentNextAction> {
77 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
78 Ok(Box::new(Builder {
79 out: &mut self.out,
80 builder: SetupIntentNextActionBuilder::deser_default(),
81 }))
82 }
83 }
84
85 impl MapBuilder for SetupIntentNextActionBuilder {
86 type Out = SetupIntentNextAction;
87 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
88 Ok(match k {
89 "blik_authorize" => Deserialize::begin(&mut self.blik_authorize),
90 "cashapp_handle_redirect_or_display_qr_code" => {
91 Deserialize::begin(&mut self.cashapp_handle_redirect_or_display_qr_code)
92 }
93 "pix_display_qr_code" => Deserialize::begin(&mut self.pix_display_qr_code),
94 "redirect_to_url" => Deserialize::begin(&mut self.redirect_to_url),
95 "type" => Deserialize::begin(&mut self.type_),
96 "upi_handle_redirect_or_display_qr_code" => {
97 Deserialize::begin(&mut self.upi_handle_redirect_or_display_qr_code)
98 }
99 "use_stripe_sdk" => Deserialize::begin(&mut self.use_stripe_sdk),
100 "verify_with_microdeposits" => {
101 Deserialize::begin(&mut self.verify_with_microdeposits)
102 }
103 _ => <dyn Visitor>::ignore(),
104 })
105 }
106
107 fn deser_default() -> Self {
108 Self {
109 blik_authorize: Some(None),
110 cashapp_handle_redirect_or_display_qr_code: Some(None),
111 pix_display_qr_code: Some(None),
112 redirect_to_url: Some(None),
113 type_: None,
114 upi_handle_redirect_or_display_qr_code: Some(None),
115 use_stripe_sdk: Some(None),
116 verify_with_microdeposits: Some(None),
117 }
118 }
119
120 fn take_out(&mut self) -> Option<Self::Out> {
121 let (
122 Some(blik_authorize),
123 Some(cashapp_handle_redirect_or_display_qr_code),
124 Some(pix_display_qr_code),
125 Some(redirect_to_url),
126 Some(type_),
127 Some(upi_handle_redirect_or_display_qr_code),
128 Some(use_stripe_sdk),
129 Some(verify_with_microdeposits),
130 ) = (
131 self.blik_authorize,
132 self.cashapp_handle_redirect_or_display_qr_code.take(),
133 self.pix_display_qr_code.take(),
134 self.redirect_to_url.take(),
135 self.type_.take(),
136 self.upi_handle_redirect_or_display_qr_code.take(),
137 self.use_stripe_sdk.take(),
138 self.verify_with_microdeposits.take(),
139 )
140 else {
141 return None;
142 };
143 Some(Self::Out {
144 blik_authorize,
145 cashapp_handle_redirect_or_display_qr_code,
146 pix_display_qr_code,
147 redirect_to_url,
148 type_,
149 upi_handle_redirect_or_display_qr_code,
150 use_stripe_sdk,
151 verify_with_microdeposits,
152 })
153 }
154 }
155
156 impl Map for Builder<'_> {
157 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
158 self.builder.key(k)
159 }
160
161 fn finish(&mut self) -> Result<()> {
162 *self.out = self.builder.take_out();
163 Ok(())
164 }
165 }
166
167 impl ObjectDeser for SetupIntentNextAction {
168 type Builder = SetupIntentNextActionBuilder;
169 }
170
171 impl FromValueOpt for SetupIntentNextAction {
172 fn from_value(v: Value) -> Option<Self> {
173 let Value::Object(obj) = v else {
174 return None;
175 };
176 let mut b = SetupIntentNextActionBuilder::deser_default();
177 for (k, v) in obj {
178 match k.as_str() {
179 "blik_authorize" => b.blik_authorize = FromValueOpt::from_value(v),
180 "cashapp_handle_redirect_or_display_qr_code" => {
181 b.cashapp_handle_redirect_or_display_qr_code = FromValueOpt::from_value(v)
182 }
183 "pix_display_qr_code" => b.pix_display_qr_code = FromValueOpt::from_value(v),
184 "redirect_to_url" => b.redirect_to_url = FromValueOpt::from_value(v),
185 "type" => b.type_ = FromValueOpt::from_value(v),
186 "upi_handle_redirect_or_display_qr_code" => {
187 b.upi_handle_redirect_or_display_qr_code = FromValueOpt::from_value(v)
188 }
189 "use_stripe_sdk" => b.use_stripe_sdk = FromValueOpt::from_value(v),
190 "verify_with_microdeposits" => {
191 b.verify_with_microdeposits = FromValueOpt::from_value(v)
192 }
193 _ => {}
194 }
195 }
196 b.take_out()
197 }
198 }
199};