1mod error;
2
3pub mod encryption;
4pub mod providers;
5pub mod traits;
6
7pub use error::EncryptionError;
8pub use traits::{Encryptor, Secret, SecretsProvider};
9
10use std::sync::Arc;
11
12pub enum SecretsProviderKind {
13 Environment {
14 prefix: Option<String>,
15 },
16 #[cfg(feature = "aws")]
17 Aws {
18 region: String,
19 },
20 #[cfg(feature = "gcp")]
21 Gcp {
22 project_id: String,
23 },
24}
25
26#[must_use]
27pub fn get_secrets_provider(kind: SecretsProviderKind) -> Arc<dyn SecretsProvider> {
28 match kind {
29 SecretsProviderKind::Environment { prefix } => Arc::new(
30 providers::environment::EnvironmentSecretsProvider::new(prefix),
31 ),
32 #[cfg(feature = "aws")]
33 SecretsProviderKind::Aws { region } => {
34 Arc::new(providers::aws::AwsSecretsManagerProvider::new(region))
35 }
36 #[cfg(feature = "gcp")]
37 SecretsProviderKind::Gcp { project_id } => {
38 Arc::new(providers::gcp::GcpSecretManagerProvider::new(project_id))
39 }
40 }
41}