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 ProviderClientsApi: Send + Sync {
29 async fn add_existing_organization<'a>(
31 &self,
32 provider_id: uuid::Uuid,
33 add_existing_organization_request_body: Option<models::AddExistingOrganizationRequestBody>,
34 ) -> Result<(), Error<AddExistingOrganizationError>>;
35
36 async fn create<'a>(
38 &self,
39 provider_id: uuid::Uuid,
40 create_client_organization_request_body: Option<
41 models::CreateClientOrganizationRequestBody,
42 >,
43 ) -> Result<(), Error<CreateError>>;
44
45 async fn get_addable_organizations<'a>(
47 &self,
48 provider_id: uuid::Uuid,
49 ) -> Result<(), Error<GetAddableOrganizationsError>>;
50
51 async fn update<'a>(
53 &self,
54 provider_id: uuid::Uuid,
55 provider_organization_id: uuid::Uuid,
56 update_client_organization_request_body: Option<
57 models::UpdateClientOrganizationRequestBody,
58 >,
59 ) -> Result<(), Error<UpdateError>>;
60}
61
62pub struct ProviderClientsApiClient {
63 configuration: Arc<configuration::Configuration>,
64}
65
66impl ProviderClientsApiClient {
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 ProviderClientsApi for ProviderClientsApiClient {
75 async fn add_existing_organization<'a>(
76 &self,
77 provider_id: uuid::Uuid,
78 add_existing_organization_request_body: Option<models::AddExistingOrganizationRequestBody>,
79 ) -> Result<(), Error<AddExistingOrganizationError>> {
80 let local_var_configuration = &self.configuration;
81
82 let local_var_client = &local_var_configuration.client;
83
84 let local_var_uri_str = format!(
85 "{}/providers/{providerId}/clients/existing",
86 local_var_configuration.base_path,
87 providerId = provider_id
88 );
89 let mut local_var_req_builder =
90 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
91
92 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
93 local_var_req_builder = local_var_req_builder
94 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
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.json(&add_existing_organization_request_body);
100
101 let local_var_req = local_var_req_builder.build()?;
102 let local_var_resp = local_var_client.execute(local_var_req).await?;
103
104 let local_var_status = local_var_resp.status();
105 let local_var_content = local_var_resp.text().await?;
106
107 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
108 Ok(())
109 } else {
110 let local_var_entity: Option<AddExistingOrganizationError> =
111 serde_json::from_str(&local_var_content).ok();
112 let local_var_error = ResponseContent {
113 status: local_var_status,
114 content: local_var_content,
115 entity: local_var_entity,
116 };
117 Err(Error::ResponseError(local_var_error))
118 }
119 }
120
121 async fn create<'a>(
122 &self,
123 provider_id: uuid::Uuid,
124 create_client_organization_request_body: Option<
125 models::CreateClientOrganizationRequestBody,
126 >,
127 ) -> Result<(), Error<CreateError>> {
128 let local_var_configuration = &self.configuration;
129
130 let local_var_client = &local_var_configuration.client;
131
132 let local_var_uri_str = format!(
133 "{}/providers/{providerId}/clients",
134 local_var_configuration.base_path,
135 providerId = provider_id
136 );
137 let mut local_var_req_builder =
138 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
139
140 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
141 local_var_req_builder = local_var_req_builder
142 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
143 }
144 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
145 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
146 };
147 local_var_req_builder =
148 local_var_req_builder.json(&create_client_organization_request_body);
149
150 let local_var_req = local_var_req_builder.build()?;
151 let local_var_resp = local_var_client.execute(local_var_req).await?;
152
153 let local_var_status = local_var_resp.status();
154 let local_var_content = local_var_resp.text().await?;
155
156 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
157 Ok(())
158 } else {
159 let local_var_entity: Option<CreateError> =
160 serde_json::from_str(&local_var_content).ok();
161 let local_var_error = ResponseContent {
162 status: local_var_status,
163 content: local_var_content,
164 entity: local_var_entity,
165 };
166 Err(Error::ResponseError(local_var_error))
167 }
168 }
169
170 async fn get_addable_organizations<'a>(
171 &self,
172 provider_id: uuid::Uuid,
173 ) -> Result<(), Error<GetAddableOrganizationsError>> {
174 let local_var_configuration = &self.configuration;
175
176 let local_var_client = &local_var_configuration.client;
177
178 let local_var_uri_str = format!(
179 "{}/providers/{providerId}/clients/addable",
180 local_var_configuration.base_path,
181 providerId = provider_id
182 );
183 let mut local_var_req_builder =
184 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
185
186 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
187 local_var_req_builder = local_var_req_builder
188 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
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
194 let local_var_req = local_var_req_builder.build()?;
195 let local_var_resp = local_var_client.execute(local_var_req).await?;
196
197 let local_var_status = local_var_resp.status();
198 let local_var_content = local_var_resp.text().await?;
199
200 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
201 Ok(())
202 } else {
203 let local_var_entity: Option<GetAddableOrganizationsError> =
204 serde_json::from_str(&local_var_content).ok();
205 let local_var_error = ResponseContent {
206 status: local_var_status,
207 content: local_var_content,
208 entity: local_var_entity,
209 };
210 Err(Error::ResponseError(local_var_error))
211 }
212 }
213
214 async fn update<'a>(
215 &self,
216 provider_id: uuid::Uuid,
217 provider_organization_id: uuid::Uuid,
218 update_client_organization_request_body: Option<
219 models::UpdateClientOrganizationRequestBody,
220 >,
221 ) -> Result<(), Error<UpdateError>> {
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/{providerId}/clients/{providerOrganizationId}",
228 local_var_configuration.base_path,
229 providerId = provider_id,
230 providerOrganizationId = provider_organization_id
231 );
232 let mut local_var_req_builder =
233 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
234
235 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
236 local_var_req_builder = local_var_req_builder
237 .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
238 }
239 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
240 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
241 };
242 local_var_req_builder =
243 local_var_req_builder.json(&update_client_organization_request_body);
244
245 let local_var_req = local_var_req_builder.build()?;
246 let local_var_resp = local_var_client.execute(local_var_req).await?;
247
248 let local_var_status = local_var_resp.status();
249 let local_var_content = local_var_resp.text().await?;
250
251 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
252 Ok(())
253 } else {
254 let local_var_entity: Option<UpdateError> =
255 serde_json::from_str(&local_var_content).ok();
256 let local_var_error = ResponseContent {
257 status: local_var_status,
258 content: local_var_content,
259 entity: local_var_entity,
260 };
261 Err(Error::ResponseError(local_var_error))
262 }
263 }
264}
265
266#[derive(Debug, Clone, Serialize, Deserialize)]
268#[serde(untagged)]
269pub enum AddExistingOrganizationError {
270 UnknownValue(serde_json::Value),
271}
272#[derive(Debug, Clone, Serialize, Deserialize)]
274#[serde(untagged)]
275pub enum CreateError {
276 UnknownValue(serde_json::Value),
277}
278#[derive(Debug, Clone, Serialize, Deserialize)]
280#[serde(untagged)]
281pub enum GetAddableOrganizationsError {
282 UnknownValue(serde_json::Value),
283}
284#[derive(Debug, Clone, Serialize, Deserialize)]
286#[serde(untagged)]
287pub enum UpdateError {
288 UnknownValue(serde_json::Value),
289}