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 GroupsApi: Send + Sync {
29 async fn bulk_delete<'a>(
31 &self,
32 org_id: uuid::Uuid,
33 group_bulk_request_model: Option<models::GroupBulkRequestModel>,
34 ) -> Result<(), Error>;
35
36 async fn delete<'a>(&self, org_id: uuid::Uuid, id: uuid::Uuid) -> Result<(), Error>;
38
39 async fn delete_user<'a>(
41 &self,
42 org_id: uuid::Uuid,
43 id: uuid::Uuid,
44 org_user_id: uuid::Uuid,
45 ) -> Result<(), Error>;
46
47 async fn get<'a>(
49 &self,
50 org_id: uuid::Uuid,
51 id: uuid::Uuid,
52 ) -> Result<models::GroupResponseModel, Error>;
53
54 async fn get_details<'a>(
56 &self,
57 org_id: uuid::Uuid,
58 id: uuid::Uuid,
59 ) -> Result<models::GroupDetailsResponseModel, Error>;
60
61 async fn get_organization_group_details<'a>(
63 &self,
64 org_id: uuid::Uuid,
65 ) -> Result<models::GroupDetailsResponseModelListResponseModel, Error>;
66
67 async fn get_organization_groups<'a>(
69 &self,
70 org_id: uuid::Uuid,
71 ) -> Result<models::GroupResponseModelListResponseModel, Error>;
72
73 async fn get_users<'a>(
75 &self,
76 org_id: uuid::Uuid,
77 id: uuid::Uuid,
78 ) -> Result<Vec<uuid::Uuid>, Error>;
79
80 async fn post<'a>(
82 &self,
83 org_id: uuid::Uuid,
84 group_request_model: Option<models::GroupRequestModel>,
85 ) -> Result<models::GroupResponseModel, Error>;
86
87 async fn put<'a>(
89 &self,
90 org_id: uuid::Uuid,
91 id: uuid::Uuid,
92 group_request_model: Option<models::GroupRequestModel>,
93 ) -> Result<models::GroupResponseModel, Error>;
94}
95
96pub struct GroupsApiClient {
97 configuration: Arc<configuration::Configuration>,
98}
99
100impl GroupsApiClient {
101 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
102 Self { configuration }
103 }
104}
105
106#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
107#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
108impl GroupsApi for GroupsApiClient {
109 async fn bulk_delete<'a>(
110 &self,
111 org_id: uuid::Uuid,
112 group_bulk_request_model: Option<models::GroupBulkRequestModel>,
113 ) -> Result<(), Error> {
114 let local_var_configuration = &self.configuration;
115
116 let local_var_client = &local_var_configuration.client;
117
118 let local_var_uri_str = format!(
119 "{}/organizations/{orgId}/groups",
120 local_var_configuration.base_path,
121 orgId = org_id
122 );
123 let mut local_var_req_builder =
124 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
125
126 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
127 local_var_req_builder = local_var_req_builder.json(&group_bulk_request_model);
128
129 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
130 }
131
132 async fn delete<'a>(&self, org_id: uuid::Uuid, id: uuid::Uuid) -> Result<(), Error> {
133 let local_var_configuration = &self.configuration;
134
135 let local_var_client = &local_var_configuration.client;
136
137 let local_var_uri_str = format!(
138 "{}/organizations/{orgId}/groups/{id}",
139 local_var_configuration.base_path,
140 orgId = org_id,
141 id = id
142 );
143 let mut local_var_req_builder =
144 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
145
146 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
147
148 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
149 }
150
151 async fn delete_user<'a>(
152 &self,
153 org_id: uuid::Uuid,
154 id: uuid::Uuid,
155 org_user_id: uuid::Uuid,
156 ) -> Result<(), Error> {
157 let local_var_configuration = &self.configuration;
158
159 let local_var_client = &local_var_configuration.client;
160
161 let local_var_uri_str = format!(
162 "{}/organizations/{orgId}/groups/{id}/user/{orgUserId}",
163 local_var_configuration.base_path,
164 orgId = org_id,
165 id = id,
166 orgUserId = org_user_id
167 );
168 let mut local_var_req_builder =
169 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
170
171 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
172
173 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
174 }
175
176 async fn get<'a>(
177 &self,
178 org_id: uuid::Uuid,
179 id: uuid::Uuid,
180 ) -> Result<models::GroupResponseModel, Error> {
181 let local_var_configuration = &self.configuration;
182
183 let local_var_client = &local_var_configuration.client;
184
185 let local_var_uri_str = format!(
186 "{}/organizations/{orgId}/groups/{id}",
187 local_var_configuration.base_path,
188 orgId = org_id,
189 id = id
190 );
191 let mut local_var_req_builder =
192 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
193
194 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
195
196 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
197 }
198
199 async fn get_details<'a>(
200 &self,
201 org_id: uuid::Uuid,
202 id: uuid::Uuid,
203 ) -> Result<models::GroupDetailsResponseModel, Error> {
204 let local_var_configuration = &self.configuration;
205
206 let local_var_client = &local_var_configuration.client;
207
208 let local_var_uri_str = format!(
209 "{}/organizations/{orgId}/groups/{id}/details",
210 local_var_configuration.base_path,
211 orgId = org_id,
212 id = id
213 );
214 let mut local_var_req_builder =
215 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
216
217 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
218
219 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
220 }
221
222 async fn get_organization_group_details<'a>(
223 &self,
224 org_id: uuid::Uuid,
225 ) -> Result<models::GroupDetailsResponseModelListResponseModel, Error> {
226 let local_var_configuration = &self.configuration;
227
228 let local_var_client = &local_var_configuration.client;
229
230 let local_var_uri_str = format!(
231 "{}/organizations/{orgId}/groups/details",
232 local_var_configuration.base_path,
233 orgId = org_id
234 );
235 let mut local_var_req_builder =
236 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
237
238 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
239
240 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
241 }
242
243 async fn get_organization_groups<'a>(
244 &self,
245 org_id: uuid::Uuid,
246 ) -> Result<models::GroupResponseModelListResponseModel, Error> {
247 let local_var_configuration = &self.configuration;
248
249 let local_var_client = &local_var_configuration.client;
250
251 let local_var_uri_str = format!(
252 "{}/organizations/{orgId}/groups",
253 local_var_configuration.base_path,
254 orgId = org_id
255 );
256 let mut local_var_req_builder =
257 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
258
259 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
260
261 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
262 }
263
264 async fn get_users<'a>(
265 &self,
266 org_id: uuid::Uuid,
267 id: uuid::Uuid,
268 ) -> Result<Vec<uuid::Uuid>, Error> {
269 let local_var_configuration = &self.configuration;
270
271 let local_var_client = &local_var_configuration.client;
272
273 let local_var_uri_str = format!(
274 "{}/organizations/{orgId}/groups/{id}/users",
275 local_var_configuration.base_path,
276 orgId = org_id,
277 id = id
278 );
279 let mut local_var_req_builder =
280 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
281
282 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
283
284 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
285 }
286
287 async fn post<'a>(
288 &self,
289 org_id: uuid::Uuid,
290 group_request_model: Option<models::GroupRequestModel>,
291 ) -> Result<models::GroupResponseModel, Error> {
292 let local_var_configuration = &self.configuration;
293
294 let local_var_client = &local_var_configuration.client;
295
296 let local_var_uri_str = format!(
297 "{}/organizations/{orgId}/groups",
298 local_var_configuration.base_path,
299 orgId = org_id
300 );
301 let mut local_var_req_builder =
302 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
303
304 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
305 local_var_req_builder = local_var_req_builder.json(&group_request_model);
306
307 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
308 }
309
310 async fn put<'a>(
311 &self,
312 org_id: uuid::Uuid,
313 id: uuid::Uuid,
314 group_request_model: Option<models::GroupRequestModel>,
315 ) -> Result<models::GroupResponseModel, Error> {
316 let local_var_configuration = &self.configuration;
317
318 let local_var_client = &local_var_configuration.client;
319
320 let local_var_uri_str = format!(
321 "{}/organizations/{orgId}/groups/{id}",
322 local_var_configuration.base_path,
323 orgId = org_id,
324 id = id
325 );
326 let mut local_var_req_builder =
327 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
328
329 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
330 local_var_req_builder = local_var_req_builder.json(&group_request_model);
331
332 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
333 }
334}