stripe_shared/
payment_intent_next_action_pix_display_qr_code.rs

1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct PaymentIntentNextActionPixDisplayQrCode {
5    /// The raw data string used to generate QR code, it should be used together with QR code library.
6    pub data: Option<String>,
7    /// The date (unix timestamp) when the PIX expires.
8    pub expires_at: Option<i64>,
9    /// The URL to the hosted pix instructions page, which allows customers to view the pix QR code.
10    pub hosted_instructions_url: Option<String>,
11    /// The image_url_png string used to render png QR code
12    pub image_url_png: Option<String>,
13    /// The image_url_svg string used to render svg QR code
14    pub image_url_svg: Option<String>,
15}
16#[doc(hidden)]
17pub struct PaymentIntentNextActionPixDisplayQrCodeBuilder {
18    data: Option<Option<String>>,
19    expires_at: Option<Option<i64>>,
20    hosted_instructions_url: Option<Option<String>>,
21    image_url_png: Option<Option<String>>,
22    image_url_svg: Option<Option<String>>,
23}
24
25#[allow(
26    unused_variables,
27    irrefutable_let_patterns,
28    clippy::let_unit_value,
29    clippy::match_single_binding,
30    clippy::single_match
31)]
32const _: () = {
33    use miniserde::de::{Map, Visitor};
34    use miniserde::json::Value;
35    use miniserde::{make_place, Deserialize, Result};
36    use stripe_types::miniserde_helpers::FromValueOpt;
37    use stripe_types::{MapBuilder, ObjectDeser};
38
39    make_place!(Place);
40
41    impl Deserialize for PaymentIntentNextActionPixDisplayQrCode {
42        fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
43            Place::new(out)
44        }
45    }
46
47    struct Builder<'a> {
48        out: &'a mut Option<PaymentIntentNextActionPixDisplayQrCode>,
49        builder: PaymentIntentNextActionPixDisplayQrCodeBuilder,
50    }
51
52    impl Visitor for Place<PaymentIntentNextActionPixDisplayQrCode> {
53        fn map(&mut self) -> Result<Box<dyn Map + '_>> {
54            Ok(Box::new(Builder {
55                out: &mut self.out,
56                builder: PaymentIntentNextActionPixDisplayQrCodeBuilder::deser_default(),
57            }))
58        }
59    }
60
61    impl MapBuilder for PaymentIntentNextActionPixDisplayQrCodeBuilder {
62        type Out = PaymentIntentNextActionPixDisplayQrCode;
63        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
64            Ok(match k {
65                "data" => Deserialize::begin(&mut self.data),
66                "expires_at" => Deserialize::begin(&mut self.expires_at),
67                "hosted_instructions_url" => Deserialize::begin(&mut self.hosted_instructions_url),
68                "image_url_png" => Deserialize::begin(&mut self.image_url_png),
69                "image_url_svg" => Deserialize::begin(&mut self.image_url_svg),
70
71                _ => <dyn Visitor>::ignore(),
72            })
73        }
74
75        fn deser_default() -> Self {
76            Self {
77                data: Deserialize::default(),
78                expires_at: Deserialize::default(),
79                hosted_instructions_url: Deserialize::default(),
80                image_url_png: Deserialize::default(),
81                image_url_svg: Deserialize::default(),
82            }
83        }
84
85        fn take_out(&mut self) -> Option<Self::Out> {
86            let (
87                Some(data),
88                Some(expires_at),
89                Some(hosted_instructions_url),
90                Some(image_url_png),
91                Some(image_url_svg),
92            ) = (
93                self.data.take(),
94                self.expires_at,
95                self.hosted_instructions_url.take(),
96                self.image_url_png.take(),
97                self.image_url_svg.take(),
98            )
99            else {
100                return None;
101            };
102            Some(Self::Out {
103                data,
104                expires_at,
105                hosted_instructions_url,
106                image_url_png,
107                image_url_svg,
108            })
109        }
110    }
111
112    impl<'a> Map for Builder<'a> {
113        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
114            self.builder.key(k)
115        }
116
117        fn finish(&mut self) -> Result<()> {
118            *self.out = self.builder.take_out();
119            Ok(())
120        }
121    }
122
123    impl ObjectDeser for PaymentIntentNextActionPixDisplayQrCode {
124        type Builder = PaymentIntentNextActionPixDisplayQrCodeBuilder;
125    }
126
127    impl FromValueOpt for PaymentIntentNextActionPixDisplayQrCode {
128        fn from_value(v: Value) -> Option<Self> {
129            let Value::Object(obj) = v else {
130                return None;
131            };
132            let mut b = PaymentIntentNextActionPixDisplayQrCodeBuilder::deser_default();
133            for (k, v) in obj {
134                match k.as_str() {
135                    "data" => b.data = FromValueOpt::from_value(v),
136                    "expires_at" => b.expires_at = FromValueOpt::from_value(v),
137                    "hosted_instructions_url" => {
138                        b.hosted_instructions_url = FromValueOpt::from_value(v)
139                    }
140                    "image_url_png" => b.image_url_png = FromValueOpt::from_value(v),
141                    "image_url_svg" => b.image_url_svg = FromValueOpt::from_value(v),
142
143                    _ => {}
144                }
145            }
146            b.take_out()
147        }
148    }
149};