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