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