cp_core/secrets/
mod.rs

1/*
2 * Copyright (c) Gabriel Amihalachioaie, SimpleG 2023.
3 */
4
5use std::sync::Arc;
6
7use crate::error::Error;
8use crate::error_kind::SECRETS_MANAGER_FAILURE;
9use crate::secrets::bitwarden_secrets_manager::BitwardenSecretsManager;
10use crate::secrets::secrets_manager::SecretsManager;
11
12mod bitwarden_secrets_manager;
13pub mod secrets_manager;
14
15pub fn get_secrets_manager() -> Result<Arc<dyn SecretsManager + Send + Sync>, Error> {
16    let access_token = match std::env::var("SECRETS_MANAGER_ACCESS_TOKEN") {
17        Ok(access_token) => access_token,
18        Err(error) => {
19            return Err(Error::new(
20                SECRETS_MANAGER_FAILURE.to_string(),
21                format!(
22                    "failed to retrieve secrets manager access token from environment variable: {}",
23                    error
24                ),
25            ))
26        }
27    };
28
29    Ok(Arc::new(BitwardenSecretsManager::new(access_token)))
30}