gocardless_bankaccountdata/apis/
requisitions_api.rs1use super::{Error, configuration};
12use crate::{apis::ResponseContent, models};
13use async_trait::async_trait;
14use reqwest;
15use serde::{Deserialize, Serialize};
16use std::sync::Arc;
17
18#[async_trait]
19pub trait RequisitionsApi: Send + Sync {
20 async fn create_requisition(
21 &self,
22 params: CreateRequisitionParams,
23 ) -> Result<models::SpectacularRequisition, Error<CreateRequisitionError>>;
24 async fn delete_requisition_by_id(
25 &self,
26 params: DeleteRequisitionByIdParams,
27 ) -> Result<models::SuccessfulDeleteResponse, Error<DeleteRequisitionByIdError>>;
28 async fn requisition_by_id(
29 &self,
30 params: RequisitionByIdParams,
31 ) -> Result<models::Requisition, Error<RequisitionByIdError>>;
32 async fn retrieve_all_requisitions(
33 &self,
34 params: RetrieveAllRequisitionsParams,
35 ) -> Result<models::PaginatedRequisitionList, Error<RetrieveAllRequisitionsError>>;
36}
37
38pub struct RequisitionsApiClient {
39 configuration: Arc<configuration::Configuration>,
40}
41
42impl RequisitionsApiClient {
43 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
44 Self { configuration }
45 }
46}
47
48#[derive(Clone, Debug)]
50#[cfg_attr(feature = "bon", derive(::bon::Builder))]
51pub struct CreateRequisitionParams {
52 pub requisition_request: models::RequisitionRequest,
53}
54
55#[derive(Clone, Debug)]
57#[cfg_attr(feature = "bon", derive(::bon::Builder))]
58pub struct DeleteRequisitionByIdParams {
59 pub id: String,
61}
62
63#[derive(Clone, Debug)]
65#[cfg_attr(feature = "bon", derive(::bon::Builder))]
66pub struct RequisitionByIdParams {
67 pub id: String,
69}
70
71#[derive(Clone, Debug)]
73#[cfg_attr(feature = "bon", derive(::bon::Builder))]
74pub struct RetrieveAllRequisitionsParams {
75 pub limit: Option<i32>,
77 pub offset: Option<i32>,
79}
80
81#[async_trait]
82impl RequisitionsApi for RequisitionsApiClient {
83 async fn create_requisition(
85 &self,
86 params: CreateRequisitionParams,
87 ) -> Result<models::SpectacularRequisition, Error<CreateRequisitionError>> {
88 let CreateRequisitionParams {
89 requisition_request,
90 } = params;
91
92 let local_var_configuration = &self.configuration;
93
94 let local_var_client = &local_var_configuration.client;
95
96 let local_var_uri_str =
97 format!("{}/api/v2/requisitions/", local_var_configuration.base_path);
98 let mut local_var_req_builder =
99 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
100
101 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
102 local_var_req_builder = local_var_req_builder
103 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
104 }
105 if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
106 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
107 };
108 local_var_req_builder = local_var_req_builder.json(&requisition_request);
109
110 let local_var_req = local_var_req_builder.build()?;
111 let local_var_resp = local_var_client.execute(local_var_req).await?;
112
113 let local_var_status = local_var_resp.status();
114 let local_var_content = local_var_resp.text().await?;
115
116 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
117 serde_json::from_str(&local_var_content).map_err(Error::from)
118 } else {
119 let local_var_entity: Option<CreateRequisitionError> =
120 serde_json::from_str(&local_var_content).ok();
121 let local_var_error = ResponseContent {
122 status: local_var_status,
123 content: local_var_content,
124 entity: local_var_entity,
125 };
126 Err(Error::ResponseError(local_var_error))
127 }
128 }
129
130 async fn delete_requisition_by_id(
132 &self,
133 params: DeleteRequisitionByIdParams,
134 ) -> Result<models::SuccessfulDeleteResponse, Error<DeleteRequisitionByIdError>> {
135 let DeleteRequisitionByIdParams { id } = params;
136
137 let local_var_configuration = &self.configuration;
138
139 let local_var_client = &local_var_configuration.client;
140
141 let local_var_uri_str = format!(
142 "{}/api/v2/requisitions/{id}/",
143 local_var_configuration.base_path,
144 id = crate::apis::urlencode(id)
145 );
146 let mut local_var_req_builder =
147 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
148
149 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
150 local_var_req_builder = local_var_req_builder
151 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
152 }
153 if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
154 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
155 };
156
157 let local_var_req = local_var_req_builder.build()?;
158 let local_var_resp = local_var_client.execute(local_var_req).await?;
159
160 let local_var_status = local_var_resp.status();
161 let local_var_content = local_var_resp.text().await?;
162
163 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
164 serde_json::from_str(&local_var_content).map_err(Error::from)
165 } else {
166 let local_var_entity: Option<DeleteRequisitionByIdError> =
167 serde_json::from_str(&local_var_content).ok();
168 let local_var_error = ResponseContent {
169 status: local_var_status,
170 content: local_var_content,
171 entity: local_var_entity,
172 };
173 Err(Error::ResponseError(local_var_error))
174 }
175 }
176
177 async fn requisition_by_id(
179 &self,
180 params: RequisitionByIdParams,
181 ) -> Result<models::Requisition, Error<RequisitionByIdError>> {
182 let RequisitionByIdParams { id } = params;
183
184 let local_var_configuration = &self.configuration;
185
186 let local_var_client = &local_var_configuration.client;
187
188 let local_var_uri_str = format!(
189 "{}/api/v2/requisitions/{id}/",
190 local_var_configuration.base_path,
191 id = crate::apis::urlencode(id)
192 );
193 let mut local_var_req_builder =
194 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
195
196 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
197 local_var_req_builder = local_var_req_builder
198 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
199 }
200 if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
201 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
202 };
203
204 let local_var_req = local_var_req_builder.build()?;
205 let local_var_resp = local_var_client.execute(local_var_req).await?;
206
207 let local_var_status = local_var_resp.status();
208 let local_var_content = local_var_resp.text().await?;
209
210 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
211 serde_json::from_str(&local_var_content).map_err(Error::from)
212 } else {
213 let local_var_entity: Option<RequisitionByIdError> =
214 serde_json::from_str(&local_var_content).ok();
215 let local_var_error = ResponseContent {
216 status: local_var_status,
217 content: local_var_content,
218 entity: local_var_entity,
219 };
220 Err(Error::ResponseError(local_var_error))
221 }
222 }
223
224 async fn retrieve_all_requisitions(
226 &self,
227 params: RetrieveAllRequisitionsParams,
228 ) -> Result<models::PaginatedRequisitionList, Error<RetrieveAllRequisitionsError>> {
229 let RetrieveAllRequisitionsParams { limit, offset } = params;
230
231 let local_var_configuration = &self.configuration;
232
233 let local_var_client = &local_var_configuration.client;
234
235 let local_var_uri_str =
236 format!("{}/api/v2/requisitions/", local_var_configuration.base_path);
237 let mut local_var_req_builder =
238 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
239
240 if let Some(ref local_var_str) = limit {
241 local_var_req_builder =
242 local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
243 }
244 if let Some(ref local_var_str) = offset {
245 local_var_req_builder =
246 local_var_req_builder.query(&[("offset", &local_var_str.to_string())]);
247 }
248 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
249 local_var_req_builder = local_var_req_builder
250 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
251 }
252 if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
253 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
254 };
255
256 let local_var_req = local_var_req_builder.build()?;
257 let local_var_resp = local_var_client.execute(local_var_req).await?;
258
259 let local_var_status = local_var_resp.status();
260 let local_var_content = local_var_resp.text().await?;
261
262 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
263 serde_json::from_str(&local_var_content).map_err(Error::from)
264 } else {
265 let local_var_entity: Option<RetrieveAllRequisitionsError> =
266 serde_json::from_str(&local_var_content).ok();
267 let local_var_error = ResponseContent {
268 status: local_var_status,
269 content: local_var_content,
270 entity: local_var_entity,
271 };
272 Err(Error::ResponseError(local_var_error))
273 }
274 }
275}
276
277#[derive(Debug, Clone, Serialize, Deserialize)]
279#[serde(untagged)]
280pub enum CreateRequisitionError {
281 Status400(models::ErrorResponse),
282 Status404(models::ErrorResponse),
283 Status429(models::ErrorResponse),
284 Status402(models::ErrorResponse),
285 Status401(models::ErrorResponse),
286 Status403(models::ErrorResponse),
287 UnknownValue(serde_json::Value),
288}
289
290#[derive(Debug, Clone, Serialize, Deserialize)]
292#[serde(untagged)]
293pub enum DeleteRequisitionByIdError {
294 Status400(models::ErrorResponse),
295 Status404(models::ErrorResponse),
296 Status429(models::ErrorResponse),
297 Status401(models::ErrorResponse),
298 Status403(models::ErrorResponse),
299 UnknownValue(serde_json::Value),
300}
301
302#[derive(Debug, Clone, Serialize, Deserialize)]
304#[serde(untagged)]
305pub enum RequisitionByIdError {
306 Status404(models::ErrorResponse),
307 Status400(models::ErrorResponse),
308 Status429(models::ErrorResponse),
309 Status401(models::ErrorResponse),
310 Status403(models::ErrorResponse),
311 UnknownValue(serde_json::Value),
312}
313
314#[derive(Debug, Clone, Serialize, Deserialize)]
316#[serde(untagged)]
317pub enum RetrieveAllRequisitionsError {
318 Status404(models::ErrorResponse),
319 Status400(models::ErrorResponse),
320 Status429(models::ErrorResponse),
321 Status401(models::ErrorResponse),
322 Status403(models::ErrorResponse),
323 UnknownValue(serde_json::Value),
324}