stripe_shared/
source_type_klarna.rs

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::{Deserialize, Result, make_place};
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                _ => <dyn Visitor>::ignore(),
145            })
146        }
147
148        fn deser_default() -> Self {
149            Self {
150                background_image_url: Deserialize::default(),
151                client_token: Deserialize::default(),
152                first_name: Deserialize::default(),
153                last_name: Deserialize::default(),
154                locale: Deserialize::default(),
155                logo_url: Deserialize::default(),
156                page_title: Deserialize::default(),
157                pay_later_asset_urls_descriptive: Deserialize::default(),
158                pay_later_asset_urls_standard: Deserialize::default(),
159                pay_later_name: Deserialize::default(),
160                pay_later_redirect_url: Deserialize::default(),
161                pay_now_asset_urls_descriptive: Deserialize::default(),
162                pay_now_asset_urls_standard: Deserialize::default(),
163                pay_now_name: Deserialize::default(),
164                pay_now_redirect_url: Deserialize::default(),
165                pay_over_time_asset_urls_descriptive: Deserialize::default(),
166                pay_over_time_asset_urls_standard: Deserialize::default(),
167                pay_over_time_name: Deserialize::default(),
168                pay_over_time_redirect_url: Deserialize::default(),
169                payment_method_categories: Deserialize::default(),
170                purchase_country: Deserialize::default(),
171                purchase_type: Deserialize::default(),
172                redirect_url: Deserialize::default(),
173                shipping_delay: Deserialize::default(),
174                shipping_first_name: Deserialize::default(),
175                shipping_last_name: Deserialize::default(),
176            }
177        }
178
179        fn take_out(&mut self) -> Option<Self::Out> {
180            let (
181                Some(background_image_url),
182                Some(client_token),
183                Some(first_name),
184                Some(last_name),
185                Some(locale),
186                Some(logo_url),
187                Some(page_title),
188                Some(pay_later_asset_urls_descriptive),
189                Some(pay_later_asset_urls_standard),
190                Some(pay_later_name),
191                Some(pay_later_redirect_url),
192                Some(pay_now_asset_urls_descriptive),
193                Some(pay_now_asset_urls_standard),
194                Some(pay_now_name),
195                Some(pay_now_redirect_url),
196                Some(pay_over_time_asset_urls_descriptive),
197                Some(pay_over_time_asset_urls_standard),
198                Some(pay_over_time_name),
199                Some(pay_over_time_redirect_url),
200                Some(payment_method_categories),
201                Some(purchase_country),
202                Some(purchase_type),
203                Some(redirect_url),
204                Some(shipping_delay),
205                Some(shipping_first_name),
206                Some(shipping_last_name),
207            ) = (
208                self.background_image_url.take(),
209                self.client_token.take(),
210                self.first_name.take(),
211                self.last_name.take(),
212                self.locale.take(),
213                self.logo_url.take(),
214                self.page_title.take(),
215                self.pay_later_asset_urls_descriptive.take(),
216                self.pay_later_asset_urls_standard.take(),
217                self.pay_later_name.take(),
218                self.pay_later_redirect_url.take(),
219                self.pay_now_asset_urls_descriptive.take(),
220                self.pay_now_asset_urls_standard.take(),
221                self.pay_now_name.take(),
222                self.pay_now_redirect_url.take(),
223                self.pay_over_time_asset_urls_descriptive.take(),
224                self.pay_over_time_asset_urls_standard.take(),
225                self.pay_over_time_name.take(),
226                self.pay_over_time_redirect_url.take(),
227                self.payment_method_categories.take(),
228                self.purchase_country.take(),
229                self.purchase_type.take(),
230                self.redirect_url.take(),
231                self.shipping_delay,
232                self.shipping_first_name.take(),
233                self.shipping_last_name.take(),
234            )
235            else {
236                return None;
237            };
238            Some(Self::Out {
239                background_image_url,
240                client_token,
241                first_name,
242                last_name,
243                locale,
244                logo_url,
245                page_title,
246                pay_later_asset_urls_descriptive,
247                pay_later_asset_urls_standard,
248                pay_later_name,
249                pay_later_redirect_url,
250                pay_now_asset_urls_descriptive,
251                pay_now_asset_urls_standard,
252                pay_now_name,
253                pay_now_redirect_url,
254                pay_over_time_asset_urls_descriptive,
255                pay_over_time_asset_urls_standard,
256                pay_over_time_name,
257                pay_over_time_redirect_url,
258                payment_method_categories,
259                purchase_country,
260                purchase_type,
261                redirect_url,
262                shipping_delay,
263                shipping_first_name,
264                shipping_last_name,
265            })
266        }
267    }
268
269    impl Map for Builder<'_> {
270        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
271            self.builder.key(k)
272        }
273
274        fn finish(&mut self) -> Result<()> {
275            *self.out = self.builder.take_out();
276            Ok(())
277        }
278    }
279
280    impl ObjectDeser for SourceTypeKlarna {
281        type Builder = SourceTypeKlarnaBuilder;
282    }
283
284    impl FromValueOpt for SourceTypeKlarna {
285        fn from_value(v: Value) -> Option<Self> {
286            let Value::Object(obj) = v else {
287                return None;
288            };
289            let mut b = SourceTypeKlarnaBuilder::deser_default();
290            for (k, v) in obj {
291                match k.as_str() {
292                    "background_image_url" => b.background_image_url = FromValueOpt::from_value(v),
293                    "client_token" => b.client_token = FromValueOpt::from_value(v),
294                    "first_name" => b.first_name = FromValueOpt::from_value(v),
295                    "last_name" => b.last_name = FromValueOpt::from_value(v),
296                    "locale" => b.locale = FromValueOpt::from_value(v),
297                    "logo_url" => b.logo_url = FromValueOpt::from_value(v),
298                    "page_title" => b.page_title = FromValueOpt::from_value(v),
299                    "pay_later_asset_urls_descriptive" => {
300                        b.pay_later_asset_urls_descriptive = FromValueOpt::from_value(v)
301                    }
302                    "pay_later_asset_urls_standard" => {
303                        b.pay_later_asset_urls_standard = FromValueOpt::from_value(v)
304                    }
305                    "pay_later_name" => b.pay_later_name = FromValueOpt::from_value(v),
306                    "pay_later_redirect_url" => {
307                        b.pay_later_redirect_url = FromValueOpt::from_value(v)
308                    }
309                    "pay_now_asset_urls_descriptive" => {
310                        b.pay_now_asset_urls_descriptive = FromValueOpt::from_value(v)
311                    }
312                    "pay_now_asset_urls_standard" => {
313                        b.pay_now_asset_urls_standard = FromValueOpt::from_value(v)
314                    }
315                    "pay_now_name" => b.pay_now_name = FromValueOpt::from_value(v),
316                    "pay_now_redirect_url" => b.pay_now_redirect_url = FromValueOpt::from_value(v),
317                    "pay_over_time_asset_urls_descriptive" => {
318                        b.pay_over_time_asset_urls_descriptive = FromValueOpt::from_value(v)
319                    }
320                    "pay_over_time_asset_urls_standard" => {
321                        b.pay_over_time_asset_urls_standard = FromValueOpt::from_value(v)
322                    }
323                    "pay_over_time_name" => b.pay_over_time_name = FromValueOpt::from_value(v),
324                    "pay_over_time_redirect_url" => {
325                        b.pay_over_time_redirect_url = FromValueOpt::from_value(v)
326                    }
327                    "payment_method_categories" => {
328                        b.payment_method_categories = FromValueOpt::from_value(v)
329                    }
330                    "purchase_country" => b.purchase_country = FromValueOpt::from_value(v),
331                    "purchase_type" => b.purchase_type = FromValueOpt::from_value(v),
332                    "redirect_url" => b.redirect_url = FromValueOpt::from_value(v),
333                    "shipping_delay" => b.shipping_delay = FromValueOpt::from_value(v),
334                    "shipping_first_name" => b.shipping_first_name = FromValueOpt::from_value(v),
335                    "shipping_last_name" => b.shipping_last_name = FromValueOpt::from_value(v),
336                    _ => {}
337                }
338            }
339            b.take_out()
340        }
341    }
342};