haste-encryption 0.18.0

Secret storage/retrieval and symmetric encryption utilities for Haste Health.
mod error;

pub mod encryptor;
pub mod providers;
pub mod traits;

pub use error::EncryptionError;
pub use traits::{Encryptor, Secret, SecretsProvider};

use std::sync::Arc;

pub enum SecretsProviderKind {
    Environment {
        prefix: Option<String>,
    },
    #[cfg(feature = "aws")]
    Aws {
        region: String,
    },
    #[cfg(feature = "gcp")]
    Gcp {
        project_id: String,
    },
}

pub fn get_secrets_provider(kind: SecretsProviderKind) -> Arc<dyn SecretsProvider> {
    match kind {
        SecretsProviderKind::Environment { prefix } => Arc::new(
            providers::environment::EnvironmentSecretsProvider::new(prefix),
        ),
        #[cfg(feature = "aws")]
        SecretsProviderKind::Aws { region } => {
            Arc::new(providers::aws::AwsSecretsManagerProvider::new(region))
        }
        #[cfg(feature = "gcp")]
        SecretsProviderKind::Gcp { project_id } => {
            Arc::new(providers::gcp::GcpSecretManagerProvider::new(project_id))
        }
    }
}