1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct IssuingCardShipping {
5 pub address: stripe_shared::Address,
6 pub address_validation: Option<stripe_shared::IssuingCardShippingAddressValidation>,
8 pub carrier: Option<IssuingCardShippingCarrier>,
10 pub customs: Option<stripe_shared::IssuingCardShippingCustoms>,
12 pub eta: Option<stripe_types::Timestamp>,
14 pub name: String,
16 pub phone_number: Option<String>,
20 pub require_signature: Option<bool>,
25 pub service: IssuingCardShippingService,
27 pub status: Option<IssuingCardShippingStatus>,
29 pub tracking_number: Option<String>,
31 pub tracking_url: Option<String>,
33 #[cfg_attr(any(feature = "deserialize", feature = "serialize"), serde(rename = "type"))]
35 pub type_: IssuingCardShippingType,
36}
37#[doc(hidden)]
38pub struct IssuingCardShippingBuilder {
39 address: Option<stripe_shared::Address>,
40 address_validation: Option<Option<stripe_shared::IssuingCardShippingAddressValidation>>,
41 carrier: Option<Option<IssuingCardShippingCarrier>>,
42 customs: Option<Option<stripe_shared::IssuingCardShippingCustoms>>,
43 eta: Option<Option<stripe_types::Timestamp>>,
44 name: Option<String>,
45 phone_number: Option<Option<String>>,
46 require_signature: Option<Option<bool>>,
47 service: Option<IssuingCardShippingService>,
48 status: Option<Option<IssuingCardShippingStatus>>,
49 tracking_number: Option<Option<String>>,
50 tracking_url: Option<Option<String>>,
51 type_: Option<IssuingCardShippingType>,
52}
53
54#[allow(
55 unused_variables,
56 irrefutable_let_patterns,
57 clippy::let_unit_value,
58 clippy::match_single_binding,
59 clippy::single_match
60)]
61const _: () = {
62 use miniserde::de::{Map, Visitor};
63 use miniserde::json::Value;
64 use miniserde::{Deserialize, Result, make_place};
65 use stripe_types::miniserde_helpers::FromValueOpt;
66 use stripe_types::{MapBuilder, ObjectDeser};
67
68 make_place!(Place);
69
70 impl Deserialize for IssuingCardShipping {
71 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
72 Place::new(out)
73 }
74 }
75
76 struct Builder<'a> {
77 out: &'a mut Option<IssuingCardShipping>,
78 builder: IssuingCardShippingBuilder,
79 }
80
81 impl Visitor for Place<IssuingCardShipping> {
82 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
83 Ok(Box::new(Builder {
84 out: &mut self.out,
85 builder: IssuingCardShippingBuilder::deser_default(),
86 }))
87 }
88 }
89
90 impl MapBuilder for IssuingCardShippingBuilder {
91 type Out = IssuingCardShipping;
92 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
93 Ok(match k {
94 "address" => Deserialize::begin(&mut self.address),
95 "address_validation" => Deserialize::begin(&mut self.address_validation),
96 "carrier" => Deserialize::begin(&mut self.carrier),
97 "customs" => Deserialize::begin(&mut self.customs),
98 "eta" => Deserialize::begin(&mut self.eta),
99 "name" => Deserialize::begin(&mut self.name),
100 "phone_number" => Deserialize::begin(&mut self.phone_number),
101 "require_signature" => Deserialize::begin(&mut self.require_signature),
102 "service" => Deserialize::begin(&mut self.service),
103 "status" => Deserialize::begin(&mut self.status),
104 "tracking_number" => Deserialize::begin(&mut self.tracking_number),
105 "tracking_url" => Deserialize::begin(&mut self.tracking_url),
106 "type" => Deserialize::begin(&mut self.type_),
107
108 _ => <dyn Visitor>::ignore(),
109 })
110 }
111
112 fn deser_default() -> Self {
113 Self {
114 address: Deserialize::default(),
115 address_validation: Deserialize::default(),
116 carrier: Deserialize::default(),
117 customs: Deserialize::default(),
118 eta: Deserialize::default(),
119 name: Deserialize::default(),
120 phone_number: Deserialize::default(),
121 require_signature: Deserialize::default(),
122 service: Deserialize::default(),
123 status: Deserialize::default(),
124 tracking_number: Deserialize::default(),
125 tracking_url: Deserialize::default(),
126 type_: Deserialize::default(),
127 }
128 }
129
130 fn take_out(&mut self) -> Option<Self::Out> {
131 let (
132 Some(address),
133 Some(address_validation),
134 Some(carrier),
135 Some(customs),
136 Some(eta),
137 Some(name),
138 Some(phone_number),
139 Some(require_signature),
140 Some(service),
141 Some(status),
142 Some(tracking_number),
143 Some(tracking_url),
144 Some(type_),
145 ) = (
146 self.address.take(),
147 self.address_validation.take(),
148 self.carrier,
149 self.customs.take(),
150 self.eta,
151 self.name.take(),
152 self.phone_number.take(),
153 self.require_signature,
154 self.service,
155 self.status,
156 self.tracking_number.take(),
157 self.tracking_url.take(),
158 self.type_,
159 )
160 else {
161 return None;
162 };
163 Some(Self::Out {
164 address,
165 address_validation,
166 carrier,
167 customs,
168 eta,
169 name,
170 phone_number,
171 require_signature,
172 service,
173 status,
174 tracking_number,
175 tracking_url,
176 type_,
177 })
178 }
179 }
180
181 impl Map for Builder<'_> {
182 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
183 self.builder.key(k)
184 }
185
186 fn finish(&mut self) -> Result<()> {
187 *self.out = self.builder.take_out();
188 Ok(())
189 }
190 }
191
192 impl ObjectDeser for IssuingCardShipping {
193 type Builder = IssuingCardShippingBuilder;
194 }
195
196 impl FromValueOpt for IssuingCardShipping {
197 fn from_value(v: Value) -> Option<Self> {
198 let Value::Object(obj) = v else {
199 return None;
200 };
201 let mut b = IssuingCardShippingBuilder::deser_default();
202 for (k, v) in obj {
203 match k.as_str() {
204 "address" => b.address = FromValueOpt::from_value(v),
205 "address_validation" => b.address_validation = FromValueOpt::from_value(v),
206 "carrier" => b.carrier = FromValueOpt::from_value(v),
207 "customs" => b.customs = FromValueOpt::from_value(v),
208 "eta" => b.eta = FromValueOpt::from_value(v),
209 "name" => b.name = FromValueOpt::from_value(v),
210 "phone_number" => b.phone_number = FromValueOpt::from_value(v),
211 "require_signature" => b.require_signature = FromValueOpt::from_value(v),
212 "service" => b.service = FromValueOpt::from_value(v),
213 "status" => b.status = FromValueOpt::from_value(v),
214 "tracking_number" => b.tracking_number = FromValueOpt::from_value(v),
215 "tracking_url" => b.tracking_url = FromValueOpt::from_value(v),
216 "type" => b.type_ = FromValueOpt::from_value(v),
217
218 _ => {}
219 }
220 }
221 b.take_out()
222 }
223 }
224};
225#[derive(Copy, Clone, Eq, PartialEq)]
227pub enum IssuingCardShippingCarrier {
228 Dhl,
229 Fedex,
230 RoyalMail,
231 Usps,
232}
233impl IssuingCardShippingCarrier {
234 pub fn as_str(self) -> &'static str {
235 use IssuingCardShippingCarrier::*;
236 match self {
237 Dhl => "dhl",
238 Fedex => "fedex",
239 RoyalMail => "royal_mail",
240 Usps => "usps",
241 }
242 }
243}
244
245impl std::str::FromStr for IssuingCardShippingCarrier {
246 type Err = stripe_types::StripeParseError;
247 fn from_str(s: &str) -> Result<Self, Self::Err> {
248 use IssuingCardShippingCarrier::*;
249 match s {
250 "dhl" => Ok(Dhl),
251 "fedex" => Ok(Fedex),
252 "royal_mail" => Ok(RoyalMail),
253 "usps" => Ok(Usps),
254 _ => Err(stripe_types::StripeParseError),
255 }
256 }
257}
258impl std::fmt::Display for IssuingCardShippingCarrier {
259 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
260 f.write_str(self.as_str())
261 }
262}
263
264impl std::fmt::Debug for IssuingCardShippingCarrier {
265 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
266 f.write_str(self.as_str())
267 }
268}
269#[cfg(feature = "serialize")]
270impl serde::Serialize for IssuingCardShippingCarrier {
271 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
272 where
273 S: serde::Serializer,
274 {
275 serializer.serialize_str(self.as_str())
276 }
277}
278impl miniserde::Deserialize for IssuingCardShippingCarrier {
279 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
280 crate::Place::new(out)
281 }
282}
283
284impl miniserde::de::Visitor for crate::Place<IssuingCardShippingCarrier> {
285 fn string(&mut self, s: &str) -> miniserde::Result<()> {
286 use std::str::FromStr;
287 self.out = Some(IssuingCardShippingCarrier::from_str(s).map_err(|_| miniserde::Error)?);
288 Ok(())
289 }
290}
291
292stripe_types::impl_from_val_with_from_str!(IssuingCardShippingCarrier);
293#[cfg(feature = "deserialize")]
294impl<'de> serde::Deserialize<'de> for IssuingCardShippingCarrier {
295 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
296 use std::str::FromStr;
297 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
298 Self::from_str(&s)
299 .map_err(|_| serde::de::Error::custom("Unknown value for IssuingCardShippingCarrier"))
300 }
301}
302#[derive(Copy, Clone, Eq, PartialEq)]
304pub enum IssuingCardShippingService {
305 Express,
306 Priority,
307 Standard,
308}
309impl IssuingCardShippingService {
310 pub fn as_str(self) -> &'static str {
311 use IssuingCardShippingService::*;
312 match self {
313 Express => "express",
314 Priority => "priority",
315 Standard => "standard",
316 }
317 }
318}
319
320impl std::str::FromStr for IssuingCardShippingService {
321 type Err = stripe_types::StripeParseError;
322 fn from_str(s: &str) -> Result<Self, Self::Err> {
323 use IssuingCardShippingService::*;
324 match s {
325 "express" => Ok(Express),
326 "priority" => Ok(Priority),
327 "standard" => Ok(Standard),
328 _ => Err(stripe_types::StripeParseError),
329 }
330 }
331}
332impl std::fmt::Display for IssuingCardShippingService {
333 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
334 f.write_str(self.as_str())
335 }
336}
337
338impl std::fmt::Debug for IssuingCardShippingService {
339 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
340 f.write_str(self.as_str())
341 }
342}
343#[cfg(feature = "serialize")]
344impl serde::Serialize for IssuingCardShippingService {
345 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
346 where
347 S: serde::Serializer,
348 {
349 serializer.serialize_str(self.as_str())
350 }
351}
352impl miniserde::Deserialize for IssuingCardShippingService {
353 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
354 crate::Place::new(out)
355 }
356}
357
358impl miniserde::de::Visitor for crate::Place<IssuingCardShippingService> {
359 fn string(&mut self, s: &str) -> miniserde::Result<()> {
360 use std::str::FromStr;
361 self.out = Some(IssuingCardShippingService::from_str(s).map_err(|_| miniserde::Error)?);
362 Ok(())
363 }
364}
365
366stripe_types::impl_from_val_with_from_str!(IssuingCardShippingService);
367#[cfg(feature = "deserialize")]
368impl<'de> serde::Deserialize<'de> for IssuingCardShippingService {
369 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
370 use std::str::FromStr;
371 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
372 Self::from_str(&s)
373 .map_err(|_| serde::de::Error::custom("Unknown value for IssuingCardShippingService"))
374 }
375}
376#[derive(Copy, Clone, Eq, PartialEq)]
378pub enum IssuingCardShippingStatus {
379 Canceled,
380 Delivered,
381 Failure,
382 Pending,
383 Returned,
384 Shipped,
385 Submitted,
386}
387impl IssuingCardShippingStatus {
388 pub fn as_str(self) -> &'static str {
389 use IssuingCardShippingStatus::*;
390 match self {
391 Canceled => "canceled",
392 Delivered => "delivered",
393 Failure => "failure",
394 Pending => "pending",
395 Returned => "returned",
396 Shipped => "shipped",
397 Submitted => "submitted",
398 }
399 }
400}
401
402impl std::str::FromStr for IssuingCardShippingStatus {
403 type Err = stripe_types::StripeParseError;
404 fn from_str(s: &str) -> Result<Self, Self::Err> {
405 use IssuingCardShippingStatus::*;
406 match s {
407 "canceled" => Ok(Canceled),
408 "delivered" => Ok(Delivered),
409 "failure" => Ok(Failure),
410 "pending" => Ok(Pending),
411 "returned" => Ok(Returned),
412 "shipped" => Ok(Shipped),
413 "submitted" => Ok(Submitted),
414 _ => Err(stripe_types::StripeParseError),
415 }
416 }
417}
418impl std::fmt::Display for IssuingCardShippingStatus {
419 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
420 f.write_str(self.as_str())
421 }
422}
423
424impl std::fmt::Debug for IssuingCardShippingStatus {
425 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
426 f.write_str(self.as_str())
427 }
428}
429#[cfg(feature = "serialize")]
430impl serde::Serialize for IssuingCardShippingStatus {
431 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
432 where
433 S: serde::Serializer,
434 {
435 serializer.serialize_str(self.as_str())
436 }
437}
438impl miniserde::Deserialize for IssuingCardShippingStatus {
439 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
440 crate::Place::new(out)
441 }
442}
443
444impl miniserde::de::Visitor for crate::Place<IssuingCardShippingStatus> {
445 fn string(&mut self, s: &str) -> miniserde::Result<()> {
446 use std::str::FromStr;
447 self.out = Some(IssuingCardShippingStatus::from_str(s).map_err(|_| miniserde::Error)?);
448 Ok(())
449 }
450}
451
452stripe_types::impl_from_val_with_from_str!(IssuingCardShippingStatus);
453#[cfg(feature = "deserialize")]
454impl<'de> serde::Deserialize<'de> for IssuingCardShippingStatus {
455 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
456 use std::str::FromStr;
457 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
458 Self::from_str(&s)
459 .map_err(|_| serde::de::Error::custom("Unknown value for IssuingCardShippingStatus"))
460 }
461}
462#[derive(Copy, Clone, Eq, PartialEq)]
464pub enum IssuingCardShippingType {
465 Bulk,
466 Individual,
467}
468impl IssuingCardShippingType {
469 pub fn as_str(self) -> &'static str {
470 use IssuingCardShippingType::*;
471 match self {
472 Bulk => "bulk",
473 Individual => "individual",
474 }
475 }
476}
477
478impl std::str::FromStr for IssuingCardShippingType {
479 type Err = stripe_types::StripeParseError;
480 fn from_str(s: &str) -> Result<Self, Self::Err> {
481 use IssuingCardShippingType::*;
482 match s {
483 "bulk" => Ok(Bulk),
484 "individual" => Ok(Individual),
485 _ => Err(stripe_types::StripeParseError),
486 }
487 }
488}
489impl std::fmt::Display for IssuingCardShippingType {
490 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
491 f.write_str(self.as_str())
492 }
493}
494
495impl std::fmt::Debug for IssuingCardShippingType {
496 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
497 f.write_str(self.as_str())
498 }
499}
500#[cfg(feature = "serialize")]
501impl serde::Serialize for IssuingCardShippingType {
502 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
503 where
504 S: serde::Serializer,
505 {
506 serializer.serialize_str(self.as_str())
507 }
508}
509impl miniserde::Deserialize for IssuingCardShippingType {
510 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
511 crate::Place::new(out)
512 }
513}
514
515impl miniserde::de::Visitor for crate::Place<IssuingCardShippingType> {
516 fn string(&mut self, s: &str) -> miniserde::Result<()> {
517 use std::str::FromStr;
518 self.out = Some(IssuingCardShippingType::from_str(s).map_err(|_| miniserde::Error)?);
519 Ok(())
520 }
521}
522
523stripe_types::impl_from_val_with_from_str!(IssuingCardShippingType);
524#[cfg(feature = "deserialize")]
525impl<'de> serde::Deserialize<'de> for IssuingCardShippingType {
526 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
527 use std::str::FromStr;
528 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
529 Self::from_str(&s)
530 .map_err(|_| serde::de::Error::custom("Unknown value for IssuingCardShippingType"))
531 }
532}