1use std::sync::Arc;
12
13use async_trait::async_trait;
14#[cfg(feature = "mockall")]
15use mockall::automock;
16use reqwest;
17use serde::{Deserialize, Serialize, de::Error as _};
18
19use super::{Error, configuration};
20use crate::{
21 apis::{AuthRequired, ContentType, ResponseContent},
22 models,
23};
24
25#[cfg_attr(feature = "mockall", automock)]
26#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
27#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
28pub trait ProvidersApi: Send + Sync {
29 async fn delete<'a>(&self, id: uuid::Uuid) -> Result<(), Error<DeleteError>>;
31
32 async fn get<'a>(
34 &self,
35 id: uuid::Uuid,
36 ) -> Result<models::ProviderResponseModel, Error<GetError>>;
37
38 async fn post_delete_recover_token<'a>(
40 &self,
41 id: uuid::Uuid,
42 provider_verify_delete_recover_request_model: Option<
43 models::ProviderVerifyDeleteRecoverRequestModel,
44 >,
45 ) -> Result<(), Error<PostDeleteRecoverTokenError>>;
46
47 async fn put<'a>(
49 &self,
50 id: uuid::Uuid,
51 provider_update_request_model: Option<models::ProviderUpdateRequestModel>,
52 ) -> Result<models::ProviderResponseModel, Error<PutError>>;
53
54 async fn setup<'a>(
56 &self,
57 id: uuid::Uuid,
58 provider_setup_request_model: Option<models::ProviderSetupRequestModel>,
59 ) -> Result<models::ProviderResponseModel, Error<SetupError>>;
60}
61
62pub struct ProvidersApiClient {
63 configuration: Arc<configuration::Configuration>,
64}
65
66impl ProvidersApiClient {
67 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
68 Self { configuration }
69 }
70}
71
72#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
73#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
74impl ProvidersApi for ProvidersApiClient {
75 async fn delete<'a>(&self, id: uuid::Uuid) -> Result<(), Error<DeleteError>> {
76 let local_var_configuration = &self.configuration;
77
78 let local_var_client = &local_var_configuration.client;
79
80 let local_var_uri_str = format!(
81 "{}/providers/{id}",
82 local_var_configuration.base_path,
83 id = id
84 );
85 let mut local_var_req_builder =
86 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
87
88 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
89 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
90 };
91 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
92
93 let local_var_req = local_var_req_builder.build()?;
94 let local_var_resp = local_var_client.execute(local_var_req).await?;
95
96 let local_var_status = local_var_resp.status();
97 let local_var_content = local_var_resp.text().await?;
98
99 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
100 Ok(())
101 } else {
102 let local_var_entity: Option<DeleteError> =
103 serde_json::from_str(&local_var_content).ok();
104 let local_var_error = ResponseContent {
105 status: local_var_status,
106 content: local_var_content,
107 entity: local_var_entity,
108 };
109 Err(Error::ResponseError(local_var_error))
110 }
111 }
112
113 async fn get<'a>(
114 &self,
115 id: uuid::Uuid,
116 ) -> Result<models::ProviderResponseModel, Error<GetError>> {
117 let local_var_configuration = &self.configuration;
118
119 let local_var_client = &local_var_configuration.client;
120
121 let local_var_uri_str = format!(
122 "{}/providers/{id}",
123 local_var_configuration.base_path,
124 id = id
125 );
126 let mut local_var_req_builder =
127 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
128
129 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
130 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
131 };
132 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
133
134 let local_var_req = local_var_req_builder.build()?;
135 let local_var_resp = local_var_client.execute(local_var_req).await?;
136
137 let local_var_status = local_var_resp.status();
138 let local_var_content_type = local_var_resp
139 .headers()
140 .get("content-type")
141 .and_then(|v| v.to_str().ok())
142 .unwrap_or("application/octet-stream");
143 let local_var_content_type = super::ContentType::from(local_var_content_type);
144 let local_var_content = local_var_resp.text().await?;
145
146 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
147 match local_var_content_type {
148 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
149 ContentType::Text => {
150 return Err(Error::from(serde_json::Error::custom(
151 "Received `text/plain` content type response that cannot be converted to `models::ProviderResponseModel`",
152 )));
153 }
154 ContentType::Unsupported(local_var_unknown_type) => {
155 return Err(Error::from(serde_json::Error::custom(format!(
156 "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderResponseModel`"
157 ))));
158 }
159 }
160 } else {
161 let local_var_entity: Option<GetError> = serde_json::from_str(&local_var_content).ok();
162 let local_var_error = ResponseContent {
163 status: local_var_status,
164 content: local_var_content,
165 entity: local_var_entity,
166 };
167 Err(Error::ResponseError(local_var_error))
168 }
169 }
170
171 async fn post_delete_recover_token<'a>(
172 &self,
173 id: uuid::Uuid,
174 provider_verify_delete_recover_request_model: Option<
175 models::ProviderVerifyDeleteRecoverRequestModel,
176 >,
177 ) -> Result<(), Error<PostDeleteRecoverTokenError>> {
178 let local_var_configuration = &self.configuration;
179
180 let local_var_client = &local_var_configuration.client;
181
182 let local_var_uri_str = format!(
183 "{}/providers/{id}/delete-recover-token",
184 local_var_configuration.base_path,
185 id = id
186 );
187 let mut local_var_req_builder =
188 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
189
190 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
191 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
192 };
193 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
194 local_var_req_builder =
195 local_var_req_builder.json(&provider_verify_delete_recover_request_model);
196
197 let local_var_req = local_var_req_builder.build()?;
198 let local_var_resp = local_var_client.execute(local_var_req).await?;
199
200 let local_var_status = local_var_resp.status();
201 let local_var_content = local_var_resp.text().await?;
202
203 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
204 Ok(())
205 } else {
206 let local_var_entity: Option<PostDeleteRecoverTokenError> =
207 serde_json::from_str(&local_var_content).ok();
208 let local_var_error = ResponseContent {
209 status: local_var_status,
210 content: local_var_content,
211 entity: local_var_entity,
212 };
213 Err(Error::ResponseError(local_var_error))
214 }
215 }
216
217 async fn put<'a>(
218 &self,
219 id: uuid::Uuid,
220 provider_update_request_model: Option<models::ProviderUpdateRequestModel>,
221 ) -> Result<models::ProviderResponseModel, Error<PutError>> {
222 let local_var_configuration = &self.configuration;
223
224 let local_var_client = &local_var_configuration.client;
225
226 let local_var_uri_str = format!(
227 "{}/providers/{id}",
228 local_var_configuration.base_path,
229 id = id
230 );
231 let mut local_var_req_builder =
232 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
233
234 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
235 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
236 };
237 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
238 local_var_req_builder = local_var_req_builder.json(&provider_update_request_model);
239
240 let local_var_req = local_var_req_builder.build()?;
241 let local_var_resp = local_var_client.execute(local_var_req).await?;
242
243 let local_var_status = local_var_resp.status();
244 let local_var_content_type = local_var_resp
245 .headers()
246 .get("content-type")
247 .and_then(|v| v.to_str().ok())
248 .unwrap_or("application/octet-stream");
249 let local_var_content_type = super::ContentType::from(local_var_content_type);
250 let local_var_content = local_var_resp.text().await?;
251
252 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
253 match local_var_content_type {
254 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
255 ContentType::Text => {
256 return Err(Error::from(serde_json::Error::custom(
257 "Received `text/plain` content type response that cannot be converted to `models::ProviderResponseModel`",
258 )));
259 }
260 ContentType::Unsupported(local_var_unknown_type) => {
261 return Err(Error::from(serde_json::Error::custom(format!(
262 "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderResponseModel`"
263 ))));
264 }
265 }
266 } else {
267 let local_var_entity: Option<PutError> = serde_json::from_str(&local_var_content).ok();
268 let local_var_error = ResponseContent {
269 status: local_var_status,
270 content: local_var_content,
271 entity: local_var_entity,
272 };
273 Err(Error::ResponseError(local_var_error))
274 }
275 }
276
277 async fn setup<'a>(
278 &self,
279 id: uuid::Uuid,
280 provider_setup_request_model: Option<models::ProviderSetupRequestModel>,
281 ) -> Result<models::ProviderResponseModel, Error<SetupError>> {
282 let local_var_configuration = &self.configuration;
283
284 let local_var_client = &local_var_configuration.client;
285
286 let local_var_uri_str = format!(
287 "{}/providers/{id}/setup",
288 local_var_configuration.base_path,
289 id = id
290 );
291 let mut local_var_req_builder =
292 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
293
294 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
295 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
296 };
297 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
298 local_var_req_builder = local_var_req_builder.json(&provider_setup_request_model);
299
300 let local_var_req = local_var_req_builder.build()?;
301 let local_var_resp = local_var_client.execute(local_var_req).await?;
302
303 let local_var_status = local_var_resp.status();
304 let local_var_content_type = local_var_resp
305 .headers()
306 .get("content-type")
307 .and_then(|v| v.to_str().ok())
308 .unwrap_or("application/octet-stream");
309 let local_var_content_type = super::ContentType::from(local_var_content_type);
310 let local_var_content = local_var_resp.text().await?;
311
312 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
313 match local_var_content_type {
314 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
315 ContentType::Text => {
316 return Err(Error::from(serde_json::Error::custom(
317 "Received `text/plain` content type response that cannot be converted to `models::ProviderResponseModel`",
318 )));
319 }
320 ContentType::Unsupported(local_var_unknown_type) => {
321 return Err(Error::from(serde_json::Error::custom(format!(
322 "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderResponseModel`"
323 ))));
324 }
325 }
326 } else {
327 let local_var_entity: Option<SetupError> =
328 serde_json::from_str(&local_var_content).ok();
329 let local_var_error = ResponseContent {
330 status: local_var_status,
331 content: local_var_content,
332 entity: local_var_entity,
333 };
334 Err(Error::ResponseError(local_var_error))
335 }
336 }
337}
338
339#[derive(Debug, Clone, Serialize, Deserialize)]
341#[serde(untagged)]
342pub enum DeleteError {
343 UnknownValue(serde_json::Value),
344}
345#[derive(Debug, Clone, Serialize, Deserialize)]
347#[serde(untagged)]
348pub enum GetError {
349 UnknownValue(serde_json::Value),
350}
351#[derive(Debug, Clone, Serialize, Deserialize)]
353#[serde(untagged)]
354pub enum PostDeleteRecoverTokenError {
355 UnknownValue(serde_json::Value),
356}
357#[derive(Debug, Clone, Serialize, Deserialize)]
359#[serde(untagged)]
360pub enum PutError {
361 UnknownValue(serde_json::Value),
362}
363#[derive(Debug, Clone, Serialize, Deserialize)]
365#[serde(untagged)]
366pub enum SetupError {
367 UnknownValue(serde_json::Value),
368}