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::{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_user_agent) = local_var_configuration.user_agent {
97 local_var_req_builder = local_var_req_builder
98 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
99 }
100 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
101 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
102 };
103 local_var_req_builder =
104 local_var_req_builder.json(&provider_organization_add_request_model);
105
106 let local_var_req = local_var_req_builder.build()?;
107 let local_var_resp = local_var_client.execute(local_var_req).await?;
108
109 let local_var_status = local_var_resp.status();
110 let local_var_content = local_var_resp.text().await?;
111
112 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
113 Ok(())
114 } else {
115 let local_var_entity: Option<AddError> = serde_json::from_str(&local_var_content).ok();
116 let local_var_error = ResponseContent {
117 status: local_var_status,
118 content: local_var_content,
119 entity: local_var_entity,
120 };
121 Err(Error::ResponseError(local_var_error))
122 }
123 }
124
125 async fn delete<'a>(
126 &self,
127 provider_id: uuid::Uuid,
128 id: uuid::Uuid,
129 ) -> Result<(), Error<DeleteError>> {
130 let local_var_configuration = &self.configuration;
131
132 let local_var_client = &local_var_configuration.client;
133
134 let local_var_uri_str = format!(
135 "{}/providers/{providerId}/organizations/{id}",
136 local_var_configuration.base_path,
137 providerId = provider_id,
138 id = id
139 );
140 let mut local_var_req_builder =
141 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
142
143 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
144 local_var_req_builder = local_var_req_builder
145 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
146 }
147 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
148 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
149 };
150
151 let local_var_req = local_var_req_builder.build()?;
152 let local_var_resp = local_var_client.execute(local_var_req).await?;
153
154 let local_var_status = local_var_resp.status();
155 let local_var_content = local_var_resp.text().await?;
156
157 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
158 Ok(())
159 } else {
160 let local_var_entity: Option<DeleteError> =
161 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 get<'a>(
172 &self,
173 provider_id: uuid::Uuid,
174 ) -> Result<
175 models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel,
176 Error<GetError>,
177 > {
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/{providerId}/organizations",
184 local_var_configuration.base_path,
185 providerId = provider_id
186 );
187 let mut local_var_req_builder =
188 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
189
190 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
191 local_var_req_builder = local_var_req_builder
192 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
193 }
194 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
195 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
196 };
197
198 let local_var_req = local_var_req_builder.build()?;
199 let local_var_resp = local_var_client.execute(local_var_req).await?;
200
201 let local_var_status = local_var_resp.status();
202 let local_var_content_type = local_var_resp
203 .headers()
204 .get("content-type")
205 .and_then(|v| v.to_str().ok())
206 .unwrap_or("application/octet-stream");
207 let local_var_content_type = super::ContentType::from(local_var_content_type);
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 match local_var_content_type {
212 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
213 ContentType::Text => {
214 return Err(Error::from(serde_json::Error::custom(
215 "Received `text/plain` content type response that cannot be converted to `models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel`",
216 )));
217 }
218 ContentType::Unsupported(local_var_unknown_type) => {
219 return Err(Error::from(serde_json::Error::custom(format!(
220 "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderOrganizationOrganizationDetailsResponseModelListResponseModel`"
221 ))));
222 }
223 }
224 } else {
225 let local_var_entity: Option<GetError> = serde_json::from_str(&local_var_content).ok();
226 let local_var_error = ResponseContent {
227 status: local_var_status,
228 content: local_var_content,
229 entity: local_var_entity,
230 };
231 Err(Error::ResponseError(local_var_error))
232 }
233 }
234
235 async fn post<'a>(
236 &self,
237 provider_id: uuid::Uuid,
238 provider_organization_create_request_model: Option<
239 models::ProviderOrganizationCreateRequestModel,
240 >,
241 ) -> Result<models::ProviderOrganizationResponseModel, Error<PostError>> {
242 let local_var_configuration = &self.configuration;
243
244 let local_var_client = &local_var_configuration.client;
245
246 let local_var_uri_str = format!(
247 "{}/providers/{providerId}/organizations",
248 local_var_configuration.base_path,
249 providerId = provider_id
250 );
251 let mut local_var_req_builder =
252 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
253
254 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
255 local_var_req_builder = local_var_req_builder
256 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
257 }
258 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
259 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
260 };
261 local_var_req_builder =
262 local_var_req_builder.json(&provider_organization_create_request_model);
263
264 let local_var_req = local_var_req_builder.build()?;
265 let local_var_resp = local_var_client.execute(local_var_req).await?;
266
267 let local_var_status = local_var_resp.status();
268 let local_var_content_type = local_var_resp
269 .headers()
270 .get("content-type")
271 .and_then(|v| v.to_str().ok())
272 .unwrap_or("application/octet-stream");
273 let local_var_content_type = super::ContentType::from(local_var_content_type);
274 let local_var_content = local_var_resp.text().await?;
275
276 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
277 match local_var_content_type {
278 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
279 ContentType::Text => {
280 return Err(Error::from(serde_json::Error::custom(
281 "Received `text/plain` content type response that cannot be converted to `models::ProviderOrganizationResponseModel`",
282 )));
283 }
284 ContentType::Unsupported(local_var_unknown_type) => {
285 return Err(Error::from(serde_json::Error::custom(format!(
286 "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::ProviderOrganizationResponseModel`"
287 ))));
288 }
289 }
290 } else {
291 let local_var_entity: Option<PostError> = serde_json::from_str(&local_var_content).ok();
292 let local_var_error = ResponseContent {
293 status: local_var_status,
294 content: local_var_content,
295 entity: local_var_entity,
296 };
297 Err(Error::ResponseError(local_var_error))
298 }
299 }
300}
301
302#[derive(Debug, Clone, Serialize, Deserialize)]
304#[serde(untagged)]
305pub enum AddError {
306 UnknownValue(serde_json::Value),
307}
308#[derive(Debug, Clone, Serialize, Deserialize)]
310#[serde(untagged)]
311pub enum DeleteError {
312 UnknownValue(serde_json::Value),
313}
314#[derive(Debug, Clone, Serialize, Deserialize)]
316#[serde(untagged)]
317pub enum GetError {
318 UnknownValue(serde_json::Value),
319}
320#[derive(Debug, Clone, Serialize, Deserialize)]
322#[serde(untagged)]
323pub enum PostError {
324 UnknownValue(serde_json::Value),
325}