1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct AccountFutureRequirements {
5 pub alternatives: Option<Vec<stripe_shared::AccountRequirementsAlternative>>,
7 pub current_deadline: Option<stripe_types::Timestamp>,
10 pub currently_due: Option<Vec<String>>,
13 pub disabled_reason: Option<AccountFutureRequirementsDisabledReason>,
15 pub errors: Option<Vec<stripe_shared::AccountRequirementsError>>,
17 pub eventually_due: Option<Vec<String>>,
20 pub past_due: Option<Vec<String>>,
24 pub pending_verification: Option<Vec<String>>,
29}
30#[doc(hidden)]
31pub struct AccountFutureRequirementsBuilder {
32 alternatives: Option<Option<Vec<stripe_shared::AccountRequirementsAlternative>>>,
33 current_deadline: Option<Option<stripe_types::Timestamp>>,
34 currently_due: Option<Option<Vec<String>>>,
35 disabled_reason: Option<Option<AccountFutureRequirementsDisabledReason>>,
36 errors: Option<Option<Vec<stripe_shared::AccountRequirementsError>>>,
37 eventually_due: Option<Option<Vec<String>>>,
38 past_due: Option<Option<Vec<String>>>,
39 pending_verification: Option<Option<Vec<String>>>,
40}
41
42#[allow(
43 unused_variables,
44 irrefutable_let_patterns,
45 clippy::let_unit_value,
46 clippy::match_single_binding,
47 clippy::single_match
48)]
49const _: () = {
50 use miniserde::de::{Map, Visitor};
51 use miniserde::json::Value;
52 use miniserde::{make_place, Deserialize, Result};
53 use stripe_types::miniserde_helpers::FromValueOpt;
54 use stripe_types::{MapBuilder, ObjectDeser};
55
56 make_place!(Place);
57
58 impl Deserialize for AccountFutureRequirements {
59 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
60 Place::new(out)
61 }
62 }
63
64 struct Builder<'a> {
65 out: &'a mut Option<AccountFutureRequirements>,
66 builder: AccountFutureRequirementsBuilder,
67 }
68
69 impl Visitor for Place<AccountFutureRequirements> {
70 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
71 Ok(Box::new(Builder {
72 out: &mut self.out,
73 builder: AccountFutureRequirementsBuilder::deser_default(),
74 }))
75 }
76 }
77
78 impl MapBuilder for AccountFutureRequirementsBuilder {
79 type Out = AccountFutureRequirements;
80 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
81 Ok(match k {
82 "alternatives" => Deserialize::begin(&mut self.alternatives),
83 "current_deadline" => Deserialize::begin(&mut self.current_deadline),
84 "currently_due" => Deserialize::begin(&mut self.currently_due),
85 "disabled_reason" => Deserialize::begin(&mut self.disabled_reason),
86 "errors" => Deserialize::begin(&mut self.errors),
87 "eventually_due" => Deserialize::begin(&mut self.eventually_due),
88 "past_due" => Deserialize::begin(&mut self.past_due),
89 "pending_verification" => Deserialize::begin(&mut self.pending_verification),
90
91 _ => <dyn Visitor>::ignore(),
92 })
93 }
94
95 fn deser_default() -> Self {
96 Self {
97 alternatives: Deserialize::default(),
98 current_deadline: Deserialize::default(),
99 currently_due: Deserialize::default(),
100 disabled_reason: Deserialize::default(),
101 errors: Deserialize::default(),
102 eventually_due: Deserialize::default(),
103 past_due: Deserialize::default(),
104 pending_verification: Deserialize::default(),
105 }
106 }
107
108 fn take_out(&mut self) -> Option<Self::Out> {
109 let (
110 Some(alternatives),
111 Some(current_deadline),
112 Some(currently_due),
113 Some(disabled_reason),
114 Some(errors),
115 Some(eventually_due),
116 Some(past_due),
117 Some(pending_verification),
118 ) = (
119 self.alternatives.take(),
120 self.current_deadline,
121 self.currently_due.take(),
122 self.disabled_reason.take(),
123 self.errors.take(),
124 self.eventually_due.take(),
125 self.past_due.take(),
126 self.pending_verification.take(),
127 )
128 else {
129 return None;
130 };
131 Some(Self::Out {
132 alternatives,
133 current_deadline,
134 currently_due,
135 disabled_reason,
136 errors,
137 eventually_due,
138 past_due,
139 pending_verification,
140 })
141 }
142 }
143
144 impl<'a> Map for Builder<'a> {
145 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
146 self.builder.key(k)
147 }
148
149 fn finish(&mut self) -> Result<()> {
150 *self.out = self.builder.take_out();
151 Ok(())
152 }
153 }
154
155 impl ObjectDeser for AccountFutureRequirements {
156 type Builder = AccountFutureRequirementsBuilder;
157 }
158
159 impl FromValueOpt for AccountFutureRequirements {
160 fn from_value(v: Value) -> Option<Self> {
161 let Value::Object(obj) = v else {
162 return None;
163 };
164 let mut b = AccountFutureRequirementsBuilder::deser_default();
165 for (k, v) in obj {
166 match k.as_str() {
167 "alternatives" => b.alternatives = FromValueOpt::from_value(v),
168 "current_deadline" => b.current_deadline = FromValueOpt::from_value(v),
169 "currently_due" => b.currently_due = FromValueOpt::from_value(v),
170 "disabled_reason" => b.disabled_reason = FromValueOpt::from_value(v),
171 "errors" => b.errors = FromValueOpt::from_value(v),
172 "eventually_due" => b.eventually_due = FromValueOpt::from_value(v),
173 "past_due" => b.past_due = FromValueOpt::from_value(v),
174 "pending_verification" => b.pending_verification = FromValueOpt::from_value(v),
175
176 _ => {}
177 }
178 }
179 b.take_out()
180 }
181 }
182};
183#[derive(Clone, Eq, PartialEq)]
185#[non_exhaustive]
186pub enum AccountFutureRequirementsDisabledReason {
187 ActionRequiredRequestedCapabilities,
188 Listed,
189 Other,
190 PlatformPaused,
191 RejectedFraud,
192 RejectedIncompleteVerification,
193 RejectedListed,
194 RejectedOther,
195 RejectedPlatformFraud,
196 RejectedPlatformOther,
197 RejectedPlatformTermsOfService,
198 RejectedTermsOfService,
199 RequirementsPastDue,
200 RequirementsPendingVerification,
201 UnderReview,
202 Unknown(String),
204}
205impl AccountFutureRequirementsDisabledReason {
206 pub fn as_str(&self) -> &str {
207 use AccountFutureRequirementsDisabledReason::*;
208 match self {
209 ActionRequiredRequestedCapabilities => "action_required.requested_capabilities",
210 Listed => "listed",
211 Other => "other",
212 PlatformPaused => "platform_paused",
213 RejectedFraud => "rejected.fraud",
214 RejectedIncompleteVerification => "rejected.incomplete_verification",
215 RejectedListed => "rejected.listed",
216 RejectedOther => "rejected.other",
217 RejectedPlatformFraud => "rejected.platform_fraud",
218 RejectedPlatformOther => "rejected.platform_other",
219 RejectedPlatformTermsOfService => "rejected.platform_terms_of_service",
220 RejectedTermsOfService => "rejected.terms_of_service",
221 RequirementsPastDue => "requirements.past_due",
222 RequirementsPendingVerification => "requirements.pending_verification",
223 UnderReview => "under_review",
224 Unknown(v) => v,
225 }
226 }
227}
228
229impl std::str::FromStr for AccountFutureRequirementsDisabledReason {
230 type Err = std::convert::Infallible;
231 fn from_str(s: &str) -> Result<Self, Self::Err> {
232 use AccountFutureRequirementsDisabledReason::*;
233 match s {
234 "action_required.requested_capabilities" => Ok(ActionRequiredRequestedCapabilities),
235 "listed" => Ok(Listed),
236 "other" => Ok(Other),
237 "platform_paused" => Ok(PlatformPaused),
238 "rejected.fraud" => Ok(RejectedFraud),
239 "rejected.incomplete_verification" => Ok(RejectedIncompleteVerification),
240 "rejected.listed" => Ok(RejectedListed),
241 "rejected.other" => Ok(RejectedOther),
242 "rejected.platform_fraud" => Ok(RejectedPlatformFraud),
243 "rejected.platform_other" => Ok(RejectedPlatformOther),
244 "rejected.platform_terms_of_service" => Ok(RejectedPlatformTermsOfService),
245 "rejected.terms_of_service" => Ok(RejectedTermsOfService),
246 "requirements.past_due" => Ok(RequirementsPastDue),
247 "requirements.pending_verification" => Ok(RequirementsPendingVerification),
248 "under_review" => Ok(UnderReview),
249 v => Ok(Unknown(v.to_owned())),
250 }
251 }
252}
253impl std::fmt::Display for AccountFutureRequirementsDisabledReason {
254 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
255 f.write_str(self.as_str())
256 }
257}
258
259impl std::fmt::Debug for AccountFutureRequirementsDisabledReason {
260 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
261 f.write_str(self.as_str())
262 }
263}
264#[cfg(feature = "serialize")]
265impl serde::Serialize for AccountFutureRequirementsDisabledReason {
266 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
267 where
268 S: serde::Serializer,
269 {
270 serializer.serialize_str(self.as_str())
271 }
272}
273impl miniserde::Deserialize for AccountFutureRequirementsDisabledReason {
274 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
275 crate::Place::new(out)
276 }
277}
278
279impl miniserde::de::Visitor for crate::Place<AccountFutureRequirementsDisabledReason> {
280 fn string(&mut self, s: &str) -> miniserde::Result<()> {
281 use std::str::FromStr;
282 self.out = Some(AccountFutureRequirementsDisabledReason::from_str(s).unwrap());
283 Ok(())
284 }
285}
286
287stripe_types::impl_from_val_with_from_str!(AccountFutureRequirementsDisabledReason);
288#[cfg(feature = "deserialize")]
289impl<'de> serde::Deserialize<'de> for AccountFutureRequirementsDisabledReason {
290 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
291 use std::str::FromStr;
292 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
293 Ok(Self::from_str(&s).unwrap())
294 }
295}