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 DevicesApi: Send + Sync {
29 async fn deactivate<'a>(&self, id: &'a str) -> Result<(), Error>;
31
32 async fn get<'a>(&self, id: &'a str) -> Result<models::DeviceResponseModel, Error>;
34
35 async fn get_all(
37 &self,
38 ) -> Result<models::DeviceAuthRequestResponseModelListResponseModel, Error>;
39
40 async fn get_by_identifier<'a>(
42 &self,
43 identifier: &'a str,
44 ) -> Result<models::DeviceResponseModel, Error>;
45
46 async fn get_by_identifier_query<'a>(
48 &self,
49 x_request_email: &'a str,
50 x_device_identifier: &'a str,
51 ) -> Result<bool, Error>;
52
53 async fn post<'a>(
55 &self,
56 device_request_model: Option<models::DeviceRequestModel>,
57 ) -> Result<models::DeviceResponseModel, Error>;
58
59 async fn post_lost_trust(&self) -> Result<(), Error>;
61
62 async fn post_untrust<'a>(
64 &self,
65 untrust_devices_request_model: Option<models::UntrustDevicesRequestModel>,
66 ) -> Result<(), Error>;
67
68 async fn post_update_trust<'a>(
70 &self,
71 update_devices_trust_request_model: Option<models::UpdateDevicesTrustRequestModel>,
72 ) -> Result<(), Error>;
73
74 async fn put<'a>(
76 &self,
77 id: &'a str,
78 device_request_model: Option<models::DeviceRequestModel>,
79 ) -> Result<models::DeviceResponseModel, Error>;
80
81 async fn put_clear_token<'a>(&self, identifier: &'a str) -> Result<(), Error>;
83
84 async fn put_keys<'a>(
86 &self,
87 identifier: &'a str,
88 device_keys_request_model: Option<models::DeviceKeysRequestModel>,
89 ) -> Result<models::DeviceResponseModel, Error>;
90
91 async fn put_token<'a>(
93 &self,
94 identifier: &'a str,
95 device_token_request_model: Option<models::DeviceTokenRequestModel>,
96 ) -> Result<(), Error>;
97
98 async fn put_web_push_auth<'a>(
100 &self,
101 identifier: &'a str,
102 web_push_auth_request_model: Option<models::WebPushAuthRequestModel>,
103 ) -> Result<(), Error>;
104}
105
106pub struct DevicesApiClient {
107 configuration: Arc<configuration::Configuration>,
108}
109
110impl DevicesApiClient {
111 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
112 Self { configuration }
113 }
114}
115
116#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
117#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
118impl DevicesApi for DevicesApiClient {
119 async fn deactivate<'a>(&self, id: &'a str) -> Result<(), Error> {
120 let local_var_configuration = &self.configuration;
121
122 let local_var_client = &local_var_configuration.client;
123
124 let local_var_uri_str = format!(
125 "{}/devices/{id}",
126 local_var_configuration.base_path,
127 id = crate::apis::urlencode(id)
128 );
129 let mut local_var_req_builder =
130 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
131
132 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
133
134 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
135 }
136
137 async fn get<'a>(&self, id: &'a str) -> Result<models::DeviceResponseModel, Error> {
138 let local_var_configuration = &self.configuration;
139
140 let local_var_client = &local_var_configuration.client;
141
142 let local_var_uri_str = format!(
143 "{}/devices/{id}",
144 local_var_configuration.base_path,
145 id = crate::apis::urlencode(id)
146 );
147 let mut local_var_req_builder =
148 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
149
150 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
151
152 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
153 }
154
155 async fn get_all(
156 &self,
157 ) -> Result<models::DeviceAuthRequestResponseModelListResponseModel, Error> {
158 let local_var_configuration = &self.configuration;
159
160 let local_var_client = &local_var_configuration.client;
161
162 let local_var_uri_str = format!("{}/devices", local_var_configuration.base_path);
163 let mut local_var_req_builder =
164 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
165
166 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
167
168 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
169 }
170
171 async fn get_by_identifier<'a>(
172 &self,
173 identifier: &'a str,
174 ) -> Result<models::DeviceResponseModel, Error> {
175 let local_var_configuration = &self.configuration;
176
177 let local_var_client = &local_var_configuration.client;
178
179 let local_var_uri_str = format!(
180 "{}/devices/identifier/{identifier}",
181 local_var_configuration.base_path,
182 identifier = crate::apis::urlencode(identifier)
183 );
184 let mut local_var_req_builder =
185 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
186
187 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
188
189 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
190 }
191
192 async fn get_by_identifier_query<'a>(
193 &self,
194 x_request_email: &'a str,
195 x_device_identifier: &'a str,
196 ) -> Result<bool, Error> {
197 let local_var_configuration = &self.configuration;
198
199 let local_var_client = &local_var_configuration.client;
200
201 let local_var_uri_str =
202 format!("{}/devices/knowndevice", local_var_configuration.base_path);
203 let mut local_var_req_builder =
204 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
205
206 local_var_req_builder =
207 local_var_req_builder.header("x-Request-Email", x_request_email.to_string());
208 local_var_req_builder =
209 local_var_req_builder.header("x-Device-Identifier", x_device_identifier.to_string());
210 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
211
212 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
213 }
214
215 async fn post<'a>(
216 &self,
217 device_request_model: Option<models::DeviceRequestModel>,
218 ) -> Result<models::DeviceResponseModel, Error> {
219 let local_var_configuration = &self.configuration;
220
221 let local_var_client = &local_var_configuration.client;
222
223 let local_var_uri_str = format!("{}/devices", local_var_configuration.base_path);
224 let mut local_var_req_builder =
225 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
226
227 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
228 local_var_req_builder = local_var_req_builder.json(&device_request_model);
229
230 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
231 }
232
233 async fn post_lost_trust(&self) -> Result<(), Error> {
234 let local_var_configuration = &self.configuration;
235
236 let local_var_client = &local_var_configuration.client;
237
238 let local_var_uri_str = format!("{}/devices/lost-trust", local_var_configuration.base_path);
239 let mut local_var_req_builder =
240 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
241
242 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
243
244 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
245 }
246
247 async fn post_untrust<'a>(
248 &self,
249 untrust_devices_request_model: Option<models::UntrustDevicesRequestModel>,
250 ) -> Result<(), Error> {
251 let local_var_configuration = &self.configuration;
252
253 let local_var_client = &local_var_configuration.client;
254
255 let local_var_uri_str = format!("{}/devices/untrust", local_var_configuration.base_path);
256 let mut local_var_req_builder =
257 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
258
259 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
260 local_var_req_builder = local_var_req_builder.json(&untrust_devices_request_model);
261
262 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
263 }
264
265 async fn post_update_trust<'a>(
266 &self,
267 update_devices_trust_request_model: Option<models::UpdateDevicesTrustRequestModel>,
268 ) -> Result<(), 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 =
274 format!("{}/devices/update-trust", local_var_configuration.base_path);
275 let mut local_var_req_builder =
276 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
277
278 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
279 local_var_req_builder = local_var_req_builder.json(&update_devices_trust_request_model);
280
281 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
282 }
283
284 async fn put<'a>(
285 &self,
286 id: &'a str,
287 device_request_model: Option<models::DeviceRequestModel>,
288 ) -> Result<models::DeviceResponseModel, Error> {
289 let local_var_configuration = &self.configuration;
290
291 let local_var_client = &local_var_configuration.client;
292
293 let local_var_uri_str = format!(
294 "{}/devices/{id}",
295 local_var_configuration.base_path,
296 id = crate::apis::urlencode(id)
297 );
298 let mut local_var_req_builder =
299 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
300
301 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
302 local_var_req_builder = local_var_req_builder.json(&device_request_model);
303
304 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
305 }
306
307 async fn put_clear_token<'a>(&self, identifier: &'a str) -> Result<(), Error> {
308 let local_var_configuration = &self.configuration;
309
310 let local_var_client = &local_var_configuration.client;
311
312 let local_var_uri_str = format!(
313 "{}/devices/identifier/{identifier}/clear-token",
314 local_var_configuration.base_path,
315 identifier = crate::apis::urlencode(identifier)
316 );
317 let mut local_var_req_builder =
318 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
319
320 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
321
322 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
323 }
324
325 async fn put_keys<'a>(
326 &self,
327 identifier: &'a str,
328 device_keys_request_model: Option<models::DeviceKeysRequestModel>,
329 ) -> Result<models::DeviceResponseModel, Error> {
330 let local_var_configuration = &self.configuration;
331
332 let local_var_client = &local_var_configuration.client;
333
334 let local_var_uri_str = format!(
335 "{}/devices/{identifier}/keys",
336 local_var_configuration.base_path,
337 identifier = crate::apis::urlencode(identifier)
338 );
339 let mut local_var_req_builder =
340 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
341
342 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
343 local_var_req_builder = local_var_req_builder.json(&device_keys_request_model);
344
345 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
346 }
347
348 async fn put_token<'a>(
349 &self,
350 identifier: &'a str,
351 device_token_request_model: Option<models::DeviceTokenRequestModel>,
352 ) -> Result<(), Error> {
353 let local_var_configuration = &self.configuration;
354
355 let local_var_client = &local_var_configuration.client;
356
357 let local_var_uri_str = format!(
358 "{}/devices/identifier/{identifier}/token",
359 local_var_configuration.base_path,
360 identifier = crate::apis::urlencode(identifier)
361 );
362 let mut local_var_req_builder =
363 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
364
365 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
366 local_var_req_builder = local_var_req_builder.json(&device_token_request_model);
367
368 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
369 }
370
371 async fn put_web_push_auth<'a>(
372 &self,
373 identifier: &'a str,
374 web_push_auth_request_model: Option<models::WebPushAuthRequestModel>,
375 ) -> Result<(), Error> {
376 let local_var_configuration = &self.configuration;
377
378 let local_var_client = &local_var_configuration.client;
379
380 let local_var_uri_str = format!(
381 "{}/devices/identifier/{identifier}/web-push-auth",
382 local_var_configuration.base_path,
383 identifier = crate::apis::urlencode(identifier)
384 );
385 let mut local_var_req_builder =
386 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
387
388 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
389 local_var_req_builder = local_var_req_builder.json(&web_push_auth_request_model);
390
391 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
392 }
393}