1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct SourceTypeKlarna {
5 pub background_image_url: Option<String>,
6 pub client_token: Option<String>,
7 pub first_name: Option<String>,
8 pub last_name: Option<String>,
9 pub locale: Option<String>,
10 pub logo_url: Option<String>,
11 pub page_title: Option<String>,
12 pub pay_later_asset_urls_descriptive: Option<String>,
13 pub pay_later_asset_urls_standard: Option<String>,
14 pub pay_later_name: Option<String>,
15 pub pay_later_redirect_url: Option<String>,
16 pub pay_now_asset_urls_descriptive: Option<String>,
17 pub pay_now_asset_urls_standard: Option<String>,
18 pub pay_now_name: Option<String>,
19 pub pay_now_redirect_url: Option<String>,
20 pub pay_over_time_asset_urls_descriptive: Option<String>,
21 pub pay_over_time_asset_urls_standard: Option<String>,
22 pub pay_over_time_name: Option<String>,
23 pub pay_over_time_redirect_url: Option<String>,
24 pub payment_method_categories: Option<String>,
25 pub purchase_country: Option<String>,
26 pub purchase_type: Option<String>,
27 pub redirect_url: Option<String>,
28 pub shipping_delay: Option<i64>,
29 pub shipping_first_name: Option<String>,
30 pub shipping_last_name: Option<String>,
31}
32#[doc(hidden)]
33pub struct SourceTypeKlarnaBuilder {
34 background_image_url: Option<Option<String>>,
35 client_token: Option<Option<String>>,
36 first_name: Option<Option<String>>,
37 last_name: Option<Option<String>>,
38 locale: Option<Option<String>>,
39 logo_url: Option<Option<String>>,
40 page_title: Option<Option<String>>,
41 pay_later_asset_urls_descriptive: Option<Option<String>>,
42 pay_later_asset_urls_standard: Option<Option<String>>,
43 pay_later_name: Option<Option<String>>,
44 pay_later_redirect_url: Option<Option<String>>,
45 pay_now_asset_urls_descriptive: Option<Option<String>>,
46 pay_now_asset_urls_standard: Option<Option<String>>,
47 pay_now_name: Option<Option<String>>,
48 pay_now_redirect_url: Option<Option<String>>,
49 pay_over_time_asset_urls_descriptive: Option<Option<String>>,
50 pay_over_time_asset_urls_standard: Option<Option<String>>,
51 pay_over_time_name: Option<Option<String>>,
52 pay_over_time_redirect_url: Option<Option<String>>,
53 payment_method_categories: Option<Option<String>>,
54 purchase_country: Option<Option<String>>,
55 purchase_type: Option<Option<String>>,
56 redirect_url: Option<Option<String>>,
57 shipping_delay: Option<Option<i64>>,
58 shipping_first_name: Option<Option<String>>,
59 shipping_last_name: Option<Option<String>>,
60}
61
62#[allow(
63 unused_variables,
64 irrefutable_let_patterns,
65 clippy::let_unit_value,
66 clippy::match_single_binding,
67 clippy::single_match
68)]
69const _: () = {
70 use miniserde::de::{Map, Visitor};
71 use miniserde::json::Value;
72 use miniserde::{make_place, Deserialize, Result};
73 use stripe_types::miniserde_helpers::FromValueOpt;
74 use stripe_types::{MapBuilder, ObjectDeser};
75
76 make_place!(Place);
77
78 impl Deserialize for SourceTypeKlarna {
79 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
80 Place::new(out)
81 }
82 }
83
84 struct Builder<'a> {
85 out: &'a mut Option<SourceTypeKlarna>,
86 builder: SourceTypeKlarnaBuilder,
87 }
88
89 impl Visitor for Place<SourceTypeKlarna> {
90 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
91 Ok(Box::new(Builder {
92 out: &mut self.out,
93 builder: SourceTypeKlarnaBuilder::deser_default(),
94 }))
95 }
96 }
97
98 impl MapBuilder for SourceTypeKlarnaBuilder {
99 type Out = SourceTypeKlarna;
100 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
101 Ok(match k {
102 "background_image_url" => Deserialize::begin(&mut self.background_image_url),
103 "client_token" => Deserialize::begin(&mut self.client_token),
104 "first_name" => Deserialize::begin(&mut self.first_name),
105 "last_name" => Deserialize::begin(&mut self.last_name),
106 "locale" => Deserialize::begin(&mut self.locale),
107 "logo_url" => Deserialize::begin(&mut self.logo_url),
108 "page_title" => Deserialize::begin(&mut self.page_title),
109 "pay_later_asset_urls_descriptive" => {
110 Deserialize::begin(&mut self.pay_later_asset_urls_descriptive)
111 }
112 "pay_later_asset_urls_standard" => {
113 Deserialize::begin(&mut self.pay_later_asset_urls_standard)
114 }
115 "pay_later_name" => Deserialize::begin(&mut self.pay_later_name),
116 "pay_later_redirect_url" => Deserialize::begin(&mut self.pay_later_redirect_url),
117 "pay_now_asset_urls_descriptive" => {
118 Deserialize::begin(&mut self.pay_now_asset_urls_descriptive)
119 }
120 "pay_now_asset_urls_standard" => {
121 Deserialize::begin(&mut self.pay_now_asset_urls_standard)
122 }
123 "pay_now_name" => Deserialize::begin(&mut self.pay_now_name),
124 "pay_now_redirect_url" => Deserialize::begin(&mut self.pay_now_redirect_url),
125 "pay_over_time_asset_urls_descriptive" => {
126 Deserialize::begin(&mut self.pay_over_time_asset_urls_descriptive)
127 }
128 "pay_over_time_asset_urls_standard" => {
129 Deserialize::begin(&mut self.pay_over_time_asset_urls_standard)
130 }
131 "pay_over_time_name" => Deserialize::begin(&mut self.pay_over_time_name),
132 "pay_over_time_redirect_url" => {
133 Deserialize::begin(&mut self.pay_over_time_redirect_url)
134 }
135 "payment_method_categories" => {
136 Deserialize::begin(&mut self.payment_method_categories)
137 }
138 "purchase_country" => Deserialize::begin(&mut self.purchase_country),
139 "purchase_type" => Deserialize::begin(&mut self.purchase_type),
140 "redirect_url" => Deserialize::begin(&mut self.redirect_url),
141 "shipping_delay" => Deserialize::begin(&mut self.shipping_delay),
142 "shipping_first_name" => Deserialize::begin(&mut self.shipping_first_name),
143 "shipping_last_name" => Deserialize::begin(&mut self.shipping_last_name),
144
145 _ => <dyn Visitor>::ignore(),
146 })
147 }
148
149 fn deser_default() -> Self {
150 Self {
151 background_image_url: Deserialize::default(),
152 client_token: Deserialize::default(),
153 first_name: Deserialize::default(),
154 last_name: Deserialize::default(),
155 locale: Deserialize::default(),
156 logo_url: Deserialize::default(),
157 page_title: Deserialize::default(),
158 pay_later_asset_urls_descriptive: Deserialize::default(),
159 pay_later_asset_urls_standard: Deserialize::default(),
160 pay_later_name: Deserialize::default(),
161 pay_later_redirect_url: Deserialize::default(),
162 pay_now_asset_urls_descriptive: Deserialize::default(),
163 pay_now_asset_urls_standard: Deserialize::default(),
164 pay_now_name: Deserialize::default(),
165 pay_now_redirect_url: Deserialize::default(),
166 pay_over_time_asset_urls_descriptive: Deserialize::default(),
167 pay_over_time_asset_urls_standard: Deserialize::default(),
168 pay_over_time_name: Deserialize::default(),
169 pay_over_time_redirect_url: Deserialize::default(),
170 payment_method_categories: Deserialize::default(),
171 purchase_country: Deserialize::default(),
172 purchase_type: Deserialize::default(),
173 redirect_url: Deserialize::default(),
174 shipping_delay: Deserialize::default(),
175 shipping_first_name: Deserialize::default(),
176 shipping_last_name: Deserialize::default(),
177 }
178 }
179
180 fn take_out(&mut self) -> Option<Self::Out> {
181 let (
182 Some(background_image_url),
183 Some(client_token),
184 Some(first_name),
185 Some(last_name),
186 Some(locale),
187 Some(logo_url),
188 Some(page_title),
189 Some(pay_later_asset_urls_descriptive),
190 Some(pay_later_asset_urls_standard),
191 Some(pay_later_name),
192 Some(pay_later_redirect_url),
193 Some(pay_now_asset_urls_descriptive),
194 Some(pay_now_asset_urls_standard),
195 Some(pay_now_name),
196 Some(pay_now_redirect_url),
197 Some(pay_over_time_asset_urls_descriptive),
198 Some(pay_over_time_asset_urls_standard),
199 Some(pay_over_time_name),
200 Some(pay_over_time_redirect_url),
201 Some(payment_method_categories),
202 Some(purchase_country),
203 Some(purchase_type),
204 Some(redirect_url),
205 Some(shipping_delay),
206 Some(shipping_first_name),
207 Some(shipping_last_name),
208 ) = (
209 self.background_image_url.take(),
210 self.client_token.take(),
211 self.first_name.take(),
212 self.last_name.take(),
213 self.locale.take(),
214 self.logo_url.take(),
215 self.page_title.take(),
216 self.pay_later_asset_urls_descriptive.take(),
217 self.pay_later_asset_urls_standard.take(),
218 self.pay_later_name.take(),
219 self.pay_later_redirect_url.take(),
220 self.pay_now_asset_urls_descriptive.take(),
221 self.pay_now_asset_urls_standard.take(),
222 self.pay_now_name.take(),
223 self.pay_now_redirect_url.take(),
224 self.pay_over_time_asset_urls_descriptive.take(),
225 self.pay_over_time_asset_urls_standard.take(),
226 self.pay_over_time_name.take(),
227 self.pay_over_time_redirect_url.take(),
228 self.payment_method_categories.take(),
229 self.purchase_country.take(),
230 self.purchase_type.take(),
231 self.redirect_url.take(),
232 self.shipping_delay,
233 self.shipping_first_name.take(),
234 self.shipping_last_name.take(),
235 )
236 else {
237 return None;
238 };
239 Some(Self::Out {
240 background_image_url,
241 client_token,
242 first_name,
243 last_name,
244 locale,
245 logo_url,
246 page_title,
247 pay_later_asset_urls_descriptive,
248 pay_later_asset_urls_standard,
249 pay_later_name,
250 pay_later_redirect_url,
251 pay_now_asset_urls_descriptive,
252 pay_now_asset_urls_standard,
253 pay_now_name,
254 pay_now_redirect_url,
255 pay_over_time_asset_urls_descriptive,
256 pay_over_time_asset_urls_standard,
257 pay_over_time_name,
258 pay_over_time_redirect_url,
259 payment_method_categories,
260 purchase_country,
261 purchase_type,
262 redirect_url,
263 shipping_delay,
264 shipping_first_name,
265 shipping_last_name,
266 })
267 }
268 }
269
270 impl<'a> Map for Builder<'a> {
271 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
272 self.builder.key(k)
273 }
274
275 fn finish(&mut self) -> Result<()> {
276 *self.out = self.builder.take_out();
277 Ok(())
278 }
279 }
280
281 impl ObjectDeser for SourceTypeKlarna {
282 type Builder = SourceTypeKlarnaBuilder;
283 }
284
285 impl FromValueOpt for SourceTypeKlarna {
286 fn from_value(v: Value) -> Option<Self> {
287 let Value::Object(obj) = v else {
288 return None;
289 };
290 let mut b = SourceTypeKlarnaBuilder::deser_default();
291 for (k, v) in obj {
292 match k.as_str() {
293 "background_image_url" => b.background_image_url = FromValueOpt::from_value(v),
294 "client_token" => b.client_token = FromValueOpt::from_value(v),
295 "first_name" => b.first_name = FromValueOpt::from_value(v),
296 "last_name" => b.last_name = FromValueOpt::from_value(v),
297 "locale" => b.locale = FromValueOpt::from_value(v),
298 "logo_url" => b.logo_url = FromValueOpt::from_value(v),
299 "page_title" => b.page_title = FromValueOpt::from_value(v),
300 "pay_later_asset_urls_descriptive" => {
301 b.pay_later_asset_urls_descriptive = FromValueOpt::from_value(v)
302 }
303 "pay_later_asset_urls_standard" => {
304 b.pay_later_asset_urls_standard = FromValueOpt::from_value(v)
305 }
306 "pay_later_name" => b.pay_later_name = FromValueOpt::from_value(v),
307 "pay_later_redirect_url" => {
308 b.pay_later_redirect_url = FromValueOpt::from_value(v)
309 }
310 "pay_now_asset_urls_descriptive" => {
311 b.pay_now_asset_urls_descriptive = FromValueOpt::from_value(v)
312 }
313 "pay_now_asset_urls_standard" => {
314 b.pay_now_asset_urls_standard = FromValueOpt::from_value(v)
315 }
316 "pay_now_name" => b.pay_now_name = FromValueOpt::from_value(v),
317 "pay_now_redirect_url" => b.pay_now_redirect_url = FromValueOpt::from_value(v),
318 "pay_over_time_asset_urls_descriptive" => {
319 b.pay_over_time_asset_urls_descriptive = FromValueOpt::from_value(v)
320 }
321 "pay_over_time_asset_urls_standard" => {
322 b.pay_over_time_asset_urls_standard = FromValueOpt::from_value(v)
323 }
324 "pay_over_time_name" => b.pay_over_time_name = FromValueOpt::from_value(v),
325 "pay_over_time_redirect_url" => {
326 b.pay_over_time_redirect_url = FromValueOpt::from_value(v)
327 }
328 "payment_method_categories" => {
329 b.payment_method_categories = FromValueOpt::from_value(v)
330 }
331 "purchase_country" => b.purchase_country = FromValueOpt::from_value(v),
332 "purchase_type" => b.purchase_type = FromValueOpt::from_value(v),
333 "redirect_url" => b.redirect_url = FromValueOpt::from_value(v),
334 "shipping_delay" => b.shipping_delay = FromValueOpt::from_value(v),
335 "shipping_first_name" => b.shipping_first_name = FromValueOpt::from_value(v),
336 "shipping_last_name" => b.shipping_last_name = FromValueOpt::from_value(v),
337
338 _ => {}
339 }
340 }
341 b.take_out()
342 }
343 }
344};