stripe/resources/generated/
file.rs1use crate::client::{Client, Response};
6use crate::ids::FileId;
7use crate::params::{Expand, List, Object, Paginable, RangeQuery, Timestamp};
8use crate::resources::FileLink;
9use serde::{Deserialize, Serialize};
10
11#[derive(Clone, Debug, Default, Deserialize, Serialize)]
15pub struct File {
16 pub id: FileId,
18
19 pub created: Timestamp,
23
24 pub expires_at: Option<Timestamp>,
26
27 pub filename: Option<String>,
29
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub links: Option<List<FileLink>>,
33
34 pub purpose: FilePurpose,
36
37 pub size: u64,
39
40 pub title: Option<String>,
42
43 #[serde(rename = "type")]
45 pub type_: Option<String>,
46
47 pub url: Option<String>,
49}
50
51impl File {
52 pub fn list(client: &Client, params: &ListFiles<'_>) -> Response<List<File>> {
56 client.get_query("/files", params)
57 }
58
59 pub fn retrieve(client: &Client, id: &FileId, expand: &[&str]) -> Response<File> {
64 client.get_query(&format!("/files/{}", id), Expand { expand })
65 }
66}
67
68impl Object for File {
69 type Id = FileId;
70 fn id(&self) -> Self::Id {
71 self.id.clone()
72 }
73 fn object(&self) -> &'static str {
74 "file"
75 }
76}
77
78#[derive(Clone, Debug, Serialize, Default)]
80pub struct ListFiles<'a> {
81 #[serde(skip_serializing_if = "Option::is_none")]
82 pub created: Option<RangeQuery<Timestamp>>,
83
84 #[serde(skip_serializing_if = "Option::is_none")]
89 pub ending_before: Option<FileId>,
90
91 #[serde(skip_serializing_if = "Expand::is_empty")]
93 pub expand: &'a [&'a str],
94
95 #[serde(skip_serializing_if = "Option::is_none")]
99 pub limit: Option<u64>,
100
101 #[serde(skip_serializing_if = "Option::is_none")]
105 pub purpose: Option<FilePurpose>,
106
107 #[serde(skip_serializing_if = "Option::is_none")]
112 pub starting_after: Option<FileId>,
113}
114
115impl<'a> ListFiles<'a> {
116 pub fn new() -> Self {
117 ListFiles {
118 created: Default::default(),
119 ending_before: Default::default(),
120 expand: Default::default(),
121 limit: Default::default(),
122 purpose: Default::default(),
123 starting_after: Default::default(),
124 }
125 }
126}
127impl Paginable for ListFiles<'_> {
128 type O = File;
129 fn set_last(&mut self, item: Self::O) {
130 self.starting_after = Some(item.id());
131 }
132}
133#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
135#[serde(rename_all = "snake_case")]
136pub enum FilePurpose {
137 AccountRequirement,
138 AdditionalVerification,
139 BusinessIcon,
140 BusinessLogo,
141 CustomerSignature,
142 DisputeEvidence,
143 DocumentProviderIdentityDocument,
144 FinanceReportRun,
145 IdentityDocument,
146 IdentityDocumentDownloadable,
147 PciDocument,
148 Selfie,
149 SigmaScheduledQuery,
150 TaxDocumentUserUpload,
151 TerminalReaderSplashscreen,
152}
153
154impl FilePurpose {
155 pub fn as_str(self) -> &'static str {
156 match self {
157 FilePurpose::AccountRequirement => "account_requirement",
158 FilePurpose::AdditionalVerification => "additional_verification",
159 FilePurpose::BusinessIcon => "business_icon",
160 FilePurpose::BusinessLogo => "business_logo",
161 FilePurpose::CustomerSignature => "customer_signature",
162 FilePurpose::DisputeEvidence => "dispute_evidence",
163 FilePurpose::DocumentProviderIdentityDocument => "document_provider_identity_document",
164 FilePurpose::FinanceReportRun => "finance_report_run",
165 FilePurpose::IdentityDocument => "identity_document",
166 FilePurpose::IdentityDocumentDownloadable => "identity_document_downloadable",
167 FilePurpose::PciDocument => "pci_document",
168 FilePurpose::Selfie => "selfie",
169 FilePurpose::SigmaScheduledQuery => "sigma_scheduled_query",
170 FilePurpose::TaxDocumentUserUpload => "tax_document_user_upload",
171 FilePurpose::TerminalReaderSplashscreen => "terminal_reader_splashscreen",
172 }
173 }
174}
175
176impl AsRef<str> for FilePurpose {
177 fn as_ref(&self) -> &str {
178 self.as_str()
179 }
180}
181
182impl std::fmt::Display for FilePurpose {
183 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
184 self.as_str().fmt(f)
185 }
186}
187impl std::default::Default for FilePurpose {
188 fn default() -> Self {
189 Self::AccountRequirement
190 }
191}