use std::sync::Arc;
use bitwarden_auth::token_management::SecretsManagerTokenHandler;
pub use bitwarden_core::ClientSettings;
use bitwarden_core::{OrganizationId, auth::auth_client::AuthClient};
use bitwarden_generators::GeneratorClientsExt;
use crate::{ProjectsClient, SecretsClient};
#[derive(Clone)]
pub struct SecretsManagerClient {
client: bitwarden_core::Client,
token_handler: Arc<SecretsManagerTokenHandler>,
}
impl SecretsManagerClient {
pub fn new(settings: Option<ClientSettings>) -> Self {
let token_handler = Arc::new(SecretsManagerTokenHandler::default());
Self {
client: bitwarden_core::Client::new_with_token_handler(settings, token_handler.clone()),
token_handler,
}
}
pub fn projects(&self) -> ProjectsClient {
ProjectsClient::new(self.clone())
}
pub fn secrets(&self) -> SecretsClient {
SecretsClient::new(self.clone())
}
pub fn auth(&self) -> AuthClient {
self.client.auth()
}
pub fn generator(&self) -> bitwarden_generators::GeneratorClient {
self.client.generator()
}
pub fn get_access_token_organization(&self) -> Option<OrganizationId> {
self.token_handler.get_access_token_organization()
}
pub(crate) fn client(&self) -> &bitwarden_core::Client {
&self.client
}
}