bitwarden_vault/folder/
folder_client.rs1use std::sync::Arc;
2
3use bitwarden_core::{FromClient, client::ApiConfigurations, key_management::KeySlotIds};
4use bitwarden_crypto::KeyStore;
5use bitwarden_state::repository::Repository;
6#[cfg(feature = "wasm")]
7use wasm_bindgen::prelude::*;
8
9use crate::{
10 Folder, FolderView,
11 error::{DecryptError, EncryptError},
12};
13
14#[cfg_attr(feature = "wasm", wasm_bindgen)]
16#[derive(FromClient)]
17pub struct FoldersClient {
18 pub(crate) key_store: KeyStore<KeySlotIds>,
19 pub(crate) api_configurations: Arc<ApiConfigurations>,
20 pub(crate) repository: Option<Arc<dyn Repository<Folder>>>,
21}
22
23#[cfg_attr(feature = "wasm", wasm_bindgen)]
24#[deprecated(
25 note = "Use the higher level `FoldersClient` methods instead, which handle encryption and decryption for you."
26)]
27impl FoldersClient {
28 pub fn encrypt(&self, folder_view: FolderView) -> Result<Folder, EncryptError> {
30 let folder = self.key_store.encrypt(folder_view)?;
31 Ok(folder)
32 }
33
34 pub fn decrypt(&self, folder: Folder) -> Result<FolderView, DecryptError> {
36 let folder_view = self.key_store.decrypt(&folder)?;
37 Ok(folder_view)
38 }
39
40 pub fn decrypt_list(&self, folders: Vec<Folder>) -> Result<Vec<FolderView>, DecryptError> {
42 let views = self.key_store.decrypt_list(&folders)?;
43 Ok(views)
44 }
45}