1#[derive(Clone, Eq, PartialEq)]
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 PaymentMethodKrCard {
6 pub brand: Option<PaymentMethodKrCardBrand>,
8 pub last4: Option<String>,
10}
11#[cfg(feature = "redact-generated-debug")]
12impl std::fmt::Debug for PaymentMethodKrCard {
13 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
14 f.debug_struct("PaymentMethodKrCard").finish_non_exhaustive()
15 }
16}
17#[doc(hidden)]
18pub struct PaymentMethodKrCardBuilder {
19 brand: Option<Option<PaymentMethodKrCardBrand>>,
20 last4: Option<Option<String>>,
21}
22
23#[allow(
24 unused_variables,
25 irrefutable_let_patterns,
26 clippy::let_unit_value,
27 clippy::match_single_binding,
28 clippy::single_match
29)]
30const _: () = {
31 use miniserde::de::{Map, Visitor};
32 use miniserde::json::Value;
33 use miniserde::{Deserialize, Result, make_place};
34 use stripe_types::miniserde_helpers::FromValueOpt;
35 use stripe_types::{MapBuilder, ObjectDeser};
36
37 make_place!(Place);
38
39 impl Deserialize for PaymentMethodKrCard {
40 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
41 Place::new(out)
42 }
43 }
44
45 struct Builder<'a> {
46 out: &'a mut Option<PaymentMethodKrCard>,
47 builder: PaymentMethodKrCardBuilder,
48 }
49
50 impl Visitor for Place<PaymentMethodKrCard> {
51 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
52 Ok(Box::new(Builder {
53 out: &mut self.out,
54 builder: PaymentMethodKrCardBuilder::deser_default(),
55 }))
56 }
57 }
58
59 impl MapBuilder for PaymentMethodKrCardBuilder {
60 type Out = PaymentMethodKrCard;
61 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
62 Ok(match k {
63 "brand" => Deserialize::begin(&mut self.brand),
64 "last4" => Deserialize::begin(&mut self.last4),
65 _ => <dyn Visitor>::ignore(),
66 })
67 }
68
69 fn deser_default() -> Self {
70 Self { brand: Some(None), last4: Some(None) }
71 }
72
73 fn take_out(&mut self) -> Option<Self::Out> {
74 let (Some(brand), Some(last4)) = (self.brand.take(), self.last4.take()) else {
75 return None;
76 };
77 Some(Self::Out { brand, last4 })
78 }
79 }
80
81 impl Map for Builder<'_> {
82 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
83 self.builder.key(k)
84 }
85
86 fn finish(&mut self) -> Result<()> {
87 *self.out = self.builder.take_out();
88 Ok(())
89 }
90 }
91
92 impl ObjectDeser for PaymentMethodKrCard {
93 type Builder = PaymentMethodKrCardBuilder;
94 }
95
96 impl FromValueOpt for PaymentMethodKrCard {
97 fn from_value(v: Value) -> Option<Self> {
98 let Value::Object(obj) = v else {
99 return None;
100 };
101 let mut b = PaymentMethodKrCardBuilder::deser_default();
102 for (k, v) in obj {
103 match k.as_str() {
104 "brand" => b.brand = FromValueOpt::from_value(v),
105 "last4" => b.last4 = FromValueOpt::from_value(v),
106 _ => {}
107 }
108 }
109 b.take_out()
110 }
111 }
112};
113#[derive(Clone, Eq, PartialEq)]
115#[non_exhaustive]
116pub enum PaymentMethodKrCardBrand {
117 Bc,
118 Citi,
119 Hana,
120 Hyundai,
121 Jeju,
122 Jeonbuk,
123 Kakaobank,
124 Kbank,
125 Kdbbank,
126 Kookmin,
127 Kwangju,
128 Lotte,
129 Mg,
130 Nh,
131 Post,
132 Samsung,
133 Savingsbank,
134 Shinhan,
135 Shinhyup,
136 Suhyup,
137 Tossbank,
138 Woori,
139 Unknown(String),
141}
142impl PaymentMethodKrCardBrand {
143 pub fn as_str(&self) -> &str {
144 use PaymentMethodKrCardBrand::*;
145 match self {
146 Bc => "bc",
147 Citi => "citi",
148 Hana => "hana",
149 Hyundai => "hyundai",
150 Jeju => "jeju",
151 Jeonbuk => "jeonbuk",
152 Kakaobank => "kakaobank",
153 Kbank => "kbank",
154 Kdbbank => "kdbbank",
155 Kookmin => "kookmin",
156 Kwangju => "kwangju",
157 Lotte => "lotte",
158 Mg => "mg",
159 Nh => "nh",
160 Post => "post",
161 Samsung => "samsung",
162 Savingsbank => "savingsbank",
163 Shinhan => "shinhan",
164 Shinhyup => "shinhyup",
165 Suhyup => "suhyup",
166 Tossbank => "tossbank",
167 Woori => "woori",
168 Unknown(v) => v,
169 }
170 }
171}
172
173impl std::str::FromStr for PaymentMethodKrCardBrand {
174 type Err = std::convert::Infallible;
175 fn from_str(s: &str) -> Result<Self, Self::Err> {
176 use PaymentMethodKrCardBrand::*;
177 match s {
178 "bc" => Ok(Bc),
179 "citi" => Ok(Citi),
180 "hana" => Ok(Hana),
181 "hyundai" => Ok(Hyundai),
182 "jeju" => Ok(Jeju),
183 "jeonbuk" => Ok(Jeonbuk),
184 "kakaobank" => Ok(Kakaobank),
185 "kbank" => Ok(Kbank),
186 "kdbbank" => Ok(Kdbbank),
187 "kookmin" => Ok(Kookmin),
188 "kwangju" => Ok(Kwangju),
189 "lotte" => Ok(Lotte),
190 "mg" => Ok(Mg),
191 "nh" => Ok(Nh),
192 "post" => Ok(Post),
193 "samsung" => Ok(Samsung),
194 "savingsbank" => Ok(Savingsbank),
195 "shinhan" => Ok(Shinhan),
196 "shinhyup" => Ok(Shinhyup),
197 "suhyup" => Ok(Suhyup),
198 "tossbank" => Ok(Tossbank),
199 "woori" => Ok(Woori),
200 v => {
201 tracing::warn!("Unknown value '{}' for enum '{}'", v, "PaymentMethodKrCardBrand");
202 Ok(Unknown(v.to_owned()))
203 }
204 }
205 }
206}
207impl std::fmt::Display for PaymentMethodKrCardBrand {
208 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
209 f.write_str(self.as_str())
210 }
211}
212
213#[cfg(not(feature = "redact-generated-debug"))]
214impl std::fmt::Debug for PaymentMethodKrCardBrand {
215 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
216 f.write_str(self.as_str())
217 }
218}
219#[cfg(feature = "redact-generated-debug")]
220impl std::fmt::Debug for PaymentMethodKrCardBrand {
221 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
222 f.debug_struct(stringify!(PaymentMethodKrCardBrand)).finish_non_exhaustive()
223 }
224}
225#[cfg(feature = "serialize")]
226impl serde::Serialize for PaymentMethodKrCardBrand {
227 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
228 where
229 S: serde::Serializer,
230 {
231 serializer.serialize_str(self.as_str())
232 }
233}
234impl miniserde::Deserialize for PaymentMethodKrCardBrand {
235 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
236 crate::Place::new(out)
237 }
238}
239
240impl miniserde::de::Visitor for crate::Place<PaymentMethodKrCardBrand> {
241 fn string(&mut self, s: &str) -> miniserde::Result<()> {
242 use std::str::FromStr;
243 self.out = Some(PaymentMethodKrCardBrand::from_str(s).expect("infallible"));
244 Ok(())
245 }
246}
247
248stripe_types::impl_from_val_with_from_str!(PaymentMethodKrCardBrand);
249#[cfg(feature = "deserialize")]
250impl<'de> serde::Deserialize<'de> for PaymentMethodKrCardBrand {
251 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
252 use std::str::FromStr;
253 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
254 Ok(Self::from_str(&s).expect("infallible"))
255 }
256}