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 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_token) = local_var_configuration.oauth_access_token {
93 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
94 };
95 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
96 local_var_req_builder = local_var_req_builder.json(&add_existing_organization_request_body);
97
98 let local_var_req = local_var_req_builder.build()?;
99 let local_var_resp = local_var_client.execute(local_var_req).await?;
100
101 let local_var_status = local_var_resp.status();
102 let local_var_content = local_var_resp.text().await?;
103
104 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
105 Ok(())
106 } else {
107 let local_var_entity: Option<AddExistingOrganizationError> =
108 serde_json::from_str(&local_var_content).ok();
109 let local_var_error = ResponseContent {
110 status: local_var_status,
111 content: local_var_content,
112 entity: local_var_entity,
113 };
114 Err(Error::ResponseError(local_var_error))
115 }
116 }
117
118 async fn create<'a>(
119 &self,
120 provider_id: uuid::Uuid,
121 create_client_organization_request_body: Option<
122 models::CreateClientOrganizationRequestBody,
123 >,
124 ) -> Result<(), Error<CreateError>> {
125 let local_var_configuration = &self.configuration;
126
127 let local_var_client = &local_var_configuration.client;
128
129 let local_var_uri_str = format!(
130 "{}/providers/{providerId}/clients",
131 local_var_configuration.base_path,
132 providerId = provider_id
133 );
134 let mut local_var_req_builder =
135 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
136
137 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
138 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
139 };
140 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
141 local_var_req_builder =
142 local_var_req_builder.json(&create_client_organization_request_body);
143
144 let local_var_req = local_var_req_builder.build()?;
145 let local_var_resp = local_var_client.execute(local_var_req).await?;
146
147 let local_var_status = local_var_resp.status();
148 let local_var_content = local_var_resp.text().await?;
149
150 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
151 Ok(())
152 } else {
153 let local_var_entity: Option<CreateError> =
154 serde_json::from_str(&local_var_content).ok();
155 let local_var_error = ResponseContent {
156 status: local_var_status,
157 content: local_var_content,
158 entity: local_var_entity,
159 };
160 Err(Error::ResponseError(local_var_error))
161 }
162 }
163
164 async fn get_addable_organizations<'a>(
165 &self,
166 provider_id: uuid::Uuid,
167 ) -> Result<(), Error<GetAddableOrganizationsError>> {
168 let local_var_configuration = &self.configuration;
169
170 let local_var_client = &local_var_configuration.client;
171
172 let local_var_uri_str = format!(
173 "{}/providers/{providerId}/clients/addable",
174 local_var_configuration.base_path,
175 providerId = provider_id
176 );
177 let mut local_var_req_builder =
178 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
179
180 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
181 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
182 };
183 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
184
185 let local_var_req = local_var_req_builder.build()?;
186 let local_var_resp = local_var_client.execute(local_var_req).await?;
187
188 let local_var_status = local_var_resp.status();
189 let local_var_content = local_var_resp.text().await?;
190
191 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
192 Ok(())
193 } else {
194 let local_var_entity: Option<GetAddableOrganizationsError> =
195 serde_json::from_str(&local_var_content).ok();
196 let local_var_error = ResponseContent {
197 status: local_var_status,
198 content: local_var_content,
199 entity: local_var_entity,
200 };
201 Err(Error::ResponseError(local_var_error))
202 }
203 }
204
205 async fn update<'a>(
206 &self,
207 provider_id: uuid::Uuid,
208 provider_organization_id: uuid::Uuid,
209 update_client_organization_request_body: Option<
210 models::UpdateClientOrganizationRequestBody,
211 >,
212 ) -> Result<(), Error<UpdateError>> {
213 let local_var_configuration = &self.configuration;
214
215 let local_var_client = &local_var_configuration.client;
216
217 let local_var_uri_str = format!(
218 "{}/providers/{providerId}/clients/{providerOrganizationId}",
219 local_var_configuration.base_path,
220 providerId = provider_id,
221 providerOrganizationId = provider_organization_id
222 );
223 let mut local_var_req_builder =
224 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
225
226 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
227 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
228 };
229 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
230 local_var_req_builder =
231 local_var_req_builder.json(&update_client_organization_request_body);
232
233 let local_var_req = local_var_req_builder.build()?;
234 let local_var_resp = local_var_client.execute(local_var_req).await?;
235
236 let local_var_status = local_var_resp.status();
237 let local_var_content = local_var_resp.text().await?;
238
239 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
240 Ok(())
241 } else {
242 let local_var_entity: Option<UpdateError> =
243 serde_json::from_str(&local_var_content).ok();
244 let local_var_error = ResponseContent {
245 status: local_var_status,
246 content: local_var_content,
247 entity: local_var_entity,
248 };
249 Err(Error::ResponseError(local_var_error))
250 }
251 }
252}
253
254#[derive(Debug, Clone, Serialize, Deserialize)]
256#[serde(untagged)]
257pub enum AddExistingOrganizationError {
258 UnknownValue(serde_json::Value),
259}
260#[derive(Debug, Clone, Serialize, Deserialize)]
262#[serde(untagged)]
263pub enum CreateError {
264 UnknownValue(serde_json::Value),
265}
266#[derive(Debug, Clone, Serialize, Deserialize)]
268#[serde(untagged)]
269pub enum GetAddableOrganizationsError {
270 UnknownValue(serde_json::Value),
271}
272#[derive(Debug, Clone, Serialize, Deserialize)]
274#[serde(untagged)]
275pub enum UpdateError {
276 UnknownValue(serde_json::Value),
277}