bitwarden_core/platform/
platform_client.rs

1use crate::{
2    Client,
3    platform::{
4        FingerprintError, FingerprintRequest, SecretVerificationRequest, UserApiKeyError,
5        UserApiKeyResponse, UserFingerprintError,
6        generate_fingerprint::{generate_fingerprint, generate_user_fingerprint},
7        get_user_api_key,
8    },
9};
10
11/// Wrapper for platform specific functionality.
12pub struct PlatformClient {
13    pub(crate) client: Client,
14}
15
16impl PlatformClient {
17    /// Fingerprint (public key)
18    pub fn fingerprint(&self, input: &FingerprintRequest) -> Result<String, FingerprintError> {
19        generate_fingerprint(input)
20    }
21
22    /// Fingerprint using logged in user's public key
23    pub fn user_fingerprint(
24        self,
25        fingerprint_material: String,
26    ) -> Result<String, UserFingerprintError> {
27        generate_user_fingerprint(&self.client, fingerprint_material)
28    }
29
30    /// Test function for performing API requests to fetch a users api key.
31    pub async fn get_user_api_key(
32        &mut self,
33        input: SecretVerificationRequest,
34    ) -> Result<UserApiKeyResponse, UserApiKeyError> {
35        get_user_api_key(&self.client, &input).await
36    }
37
38    /// Access to state functionality.
39    pub fn state(&self) -> super::StateClient {
40        super::StateClient {
41            client: self.client.clone(),
42        }
43    }
44}
45
46impl Client {
47    /// Access to platform functionality.
48    pub fn platform(&self) -> PlatformClient {
49        PlatformClient {
50            client: self.clone(),
51        }
52    }
53}