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 ProviderOrganizationsApi: Send + Sync {
29 async fn add<'a>(
31 &self,
32 provider_id: uuid::Uuid,
33 provider_organization_add_request_model: Option<
34 models::ProviderOrganizationAddRequestModel,
35 >,
36 ) -> Result<(), Error<AddError>>;
37
38 async fn delete<'a>(
40 &self,
41 provider_id: uuid::Uuid,
42 id: uuid::Uuid,
43 ) -> Result<(), Error<DeleteError>>;
44
45 async fn get<'a>(
47 &self,
48 provider_id: uuid::Uuid,
49 ) -> Result<
50 models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel,
51 Error<GetError>,
52 >;
53
54 async fn post<'a>(
56 &self,
57 provider_id: uuid::Uuid,
58 provider_organization_create_request_model: Option<
59 models::ProviderOrganizationCreateRequestModel,
60 >,
61 ) -> Result<models::ProviderOrganizationResponseModel, Error<PostError>>;
62}
63
64pub struct ProviderOrganizationsApiClient {
65 configuration: Arc<configuration::Configuration>,
66}
67
68impl ProviderOrganizationsApiClient {
69 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
70 Self { configuration }
71 }
72}
73
74#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
75#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
76impl ProviderOrganizationsApi for ProviderOrganizationsApiClient {
77 async fn add<'a>(
78 &self,
79 provider_id: uuid::Uuid,
80 provider_organization_add_request_model: Option<
81 models::ProviderOrganizationAddRequestModel,
82 >,
83 ) -> Result<(), Error<AddError>> {
84 let local_var_configuration = &self.configuration;
85
86 let local_var_client = &local_var_configuration.client;
87
88 let local_var_uri_str = format!(
89 "{}/providers/{providerId}/organizations/add",
90 local_var_configuration.base_path,
91 providerId = provider_id
92 );
93 let mut local_var_req_builder =
94 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
95
96 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
97 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
98 };
99 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
100 local_var_req_builder =
101 local_var_req_builder.json(&provider_organization_add_request_model);
102
103 let local_var_req = local_var_req_builder.build()?;
104 let local_var_resp = local_var_client.execute(local_var_req).await?;
105
106 let local_var_status = local_var_resp.status();
107 let local_var_content = local_var_resp.text().await?;
108
109 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
110 Ok(())
111 } else {
112 let local_var_entity: Option<AddError> = serde_json::from_str(&local_var_content).ok();
113 let local_var_error = ResponseContent {
114 status: local_var_status,
115 content: local_var_content,
116 entity: local_var_entity,
117 };
118 Err(Error::ResponseError(local_var_error))
119 }
120 }
121
122 async fn delete<'a>(
123 &self,
124 provider_id: uuid::Uuid,
125 id: uuid::Uuid,
126 ) -> Result<(), Error<DeleteError>> {
127 let local_var_configuration = &self.configuration;
128
129 let local_var_client = &local_var_configuration.client;
130
131 let local_var_uri_str = format!(
132 "{}/providers/{providerId}/organizations/{id}",
133 local_var_configuration.base_path,
134 providerId = provider_id,
135 id = id
136 );
137 let mut local_var_req_builder =
138 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
139
140 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
141 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
142 };
143 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
144
145 let local_var_req = local_var_req_builder.build()?;
146 let local_var_resp = local_var_client.execute(local_var_req).await?;
147
148 let local_var_status = local_var_resp.status();
149 let local_var_content = local_var_resp.text().await?;
150
151 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
152 Ok(())
153 } else {
154 let local_var_entity: Option<DeleteError> =
155 serde_json::from_str(&local_var_content).ok();
156 let local_var_error = ResponseContent {
157 status: local_var_status,
158 content: local_var_content,
159 entity: local_var_entity,
160 };
161 Err(Error::ResponseError(local_var_error))
162 }
163 }
164
165 async fn get<'a>(
166 &self,
167 provider_id: uuid::Uuid,
168 ) -> Result<
169 models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel,
170 Error<GetError>,
171 > {
172 let local_var_configuration = &self.configuration;
173
174 let local_var_client = &local_var_configuration.client;
175
176 let local_var_uri_str = format!(
177 "{}/providers/{providerId}/organizations",
178 local_var_configuration.base_path,
179 providerId = provider_id
180 );
181 let mut local_var_req_builder =
182 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
183
184 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
185 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
186 };
187 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
188
189 let local_var_req = local_var_req_builder.build()?;
190 let local_var_resp = local_var_client.execute(local_var_req).await?;
191
192 let local_var_status = local_var_resp.status();
193 let local_var_content_type = local_var_resp
194 .headers()
195 .get("content-type")
196 .and_then(|v| v.to_str().ok())
197 .unwrap_or("application/octet-stream");
198 let local_var_content_type = super::ContentType::from(local_var_content_type);
199 let local_var_content = local_var_resp.text().await?;
200
201 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
202 match local_var_content_type {
203 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
204 ContentType::Text => {
205 return Err(Error::from(serde_json::Error::custom(
206 "Received `text/plain` content type response that cannot be converted to `models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel`",
207 )));
208 }
209 ContentType::Unsupported(local_var_unknown_type) => {
210 return Err(Error::from(serde_json::Error::custom(format!(
211 "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel`"
212 ))));
213 }
214 }
215 } else {
216 let local_var_entity: Option<GetError> = serde_json::from_str(&local_var_content).ok();
217 let local_var_error = ResponseContent {
218 status: local_var_status,
219 content: local_var_content,
220 entity: local_var_entity,
221 };
222 Err(Error::ResponseError(local_var_error))
223 }
224 }
225
226 async fn post<'a>(
227 &self,
228 provider_id: uuid::Uuid,
229 provider_organization_create_request_model: Option<
230 models::ProviderOrganizationCreateRequestModel,
231 >,
232 ) -> Result<models::ProviderOrganizationResponseModel, Error<PostError>> {
233 let local_var_configuration = &self.configuration;
234
235 let local_var_client = &local_var_configuration.client;
236
237 let local_var_uri_str = format!(
238 "{}/providers/{providerId}/organizations",
239 local_var_configuration.base_path,
240 providerId = provider_id
241 );
242 let mut local_var_req_builder =
243 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
244
245 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
246 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
247 };
248 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
249 local_var_req_builder =
250 local_var_req_builder.json(&provider_organization_create_request_model);
251
252 let local_var_req = local_var_req_builder.build()?;
253 let local_var_resp = local_var_client.execute(local_var_req).await?;
254
255 let local_var_status = local_var_resp.status();
256 let local_var_content_type = local_var_resp
257 .headers()
258 .get("content-type")
259 .and_then(|v| v.to_str().ok())
260 .unwrap_or("application/octet-stream");
261 let local_var_content_type = super::ContentType::from(local_var_content_type);
262 let local_var_content = local_var_resp.text().await?;
263
264 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
265 match local_var_content_type {
266 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
267 ContentType::Text => {
268 return Err(Error::from(serde_json::Error::custom(
269 "Received `text/plain` content type response that cannot be converted to `models::ProviderOrganizationResponseModel`",
270 )));
271 }
272 ContentType::Unsupported(local_var_unknown_type) => {
273 return Err(Error::from(serde_json::Error::custom(format!(
274 "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderOrganizationResponseModel`"
275 ))));
276 }
277 }
278 } else {
279 let local_var_entity: Option<PostError> = serde_json::from_str(&local_var_content).ok();
280 let local_var_error = ResponseContent {
281 status: local_var_status,
282 content: local_var_content,
283 entity: local_var_entity,
284 };
285 Err(Error::ResponseError(local_var_error))
286 }
287 }
288}
289
290#[derive(Debug, Clone, Serialize, Deserialize)]
292#[serde(untagged)]
293pub enum AddError {
294 UnknownValue(serde_json::Value),
295}
296#[derive(Debug, Clone, Serialize, Deserialize)]
298#[serde(untagged)]
299pub enum DeleteError {
300 UnknownValue(serde_json::Value),
301}
302#[derive(Debug, Clone, Serialize, Deserialize)]
304#[serde(untagged)]
305pub enum GetError {
306 UnknownValue(serde_json::Value),
307}
308#[derive(Debug, Clone, Serialize, Deserialize)]
310#[serde(untagged)]
311pub enum PostError {
312 UnknownValue(serde_json::Value),
313}