bitwarden_core/platform/
platform_client.rs

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