1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use std::collections::BTreeMap;
use async_trait::async_trait;
use shuttle_service::{Error, Factory, ResourceBuilder};
use tokio::runtime::Runtime;
pub struct Secrets;
#[async_trait]
impl ResourceBuilder<SecretStore> for Secrets {
fn new() -> Self {
Self {}
}
async fn build(
self,
factory: &mut dyn Factory,
_runtime: &Runtime,
) -> Result<SecretStore, Error> {
let secrets = factory.get_secrets().await?;
Ok(SecretStore { secrets })
}
}
pub struct SecretStore {
secrets: BTreeMap<String, String>,
}
impl SecretStore {
pub fn get(&self, key: &str) -> Option<String> {
self.secrets.get(key).map(ToOwned::to_owned)
}
}