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::{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};