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
26pub fn get_secrets_provider(kind: SecretsProviderKind) -> Arc<dyn SecretsProvider> {
27 match kind {
28 SecretsProviderKind::Environment { prefix } => Arc::new(
29 providers::environment::EnvironmentSecretsProvider::new(prefix),
30 ),
31 #[cfg(feature = "aws")]
32 SecretsProviderKind::Aws { region } => {
33 Arc::new(providers::aws::AwsSecretsManagerProvider::new(region))
34 }
35 #[cfg(feature = "gcp")]
36 SecretsProviderKind::Gcp { project_id } => {
37 Arc::new(providers::gcp::GcpSecretManagerProvider::new(project_id))
38 }
39 }
40}