use std::path::PathBuf;
use super::SessionBackend;
#[cfg(all(feature = "azure-secrets", not(feature = "keyring")))]
mod azure;
mod file;
#[cfg(feature = "keyring")]
mod keyring;
#[cfg(all(feature = "azure-secrets", not(feature = "keyring")))]
pub(super) use azure::AzureBackend;
pub(super) use file::FileBackend;
#[cfg(feature = "keyring")]
pub(super) use keyring::KeyringBackend;
pub(super) fn default_backend(
service_name: &str,
sessions_dir: PathBuf,
) -> Box<dyn SessionBackend> {
let _ = service_name;
let _ = &sessions_dir;
#[cfg(feature = "keyring")]
{
return Box::new(KeyringBackend {
service_name: service_name.to_string(),
});
}
#[cfg(all(feature = "azure-secrets", not(feature = "keyring")))]
{
return Box::new(AzureBackend {
vault_url: std::env::var("AZURE_KEYVAULT_URL").unwrap_or_default(),
secret_prefix: service_name.to_string(),
});
}
#[cfg(all(
feature = "config-session",
not(feature = "keyring"),
not(feature = "azure-secrets")
))]
{
return Box::new(FileBackend {
sessions_dir,
warn: false,
});
}
#[allow(unreachable_code)]
Box::new(FileBackend {
sessions_dir,
warn: true,
})
}