Skip to main content

Mountain/RPC/CocoonService/Secret/
StoreSecret.rs

1//! Persist a value to the OS keychain.
2
3use tonic::{Response, Status};
4use CommonLibrary::Secret::SecretProvider::SecretProvider;
5use ::Vine::Generated::{Empty, StoreSecretRequest};
6
7use crate::{RPC::CocoonService::CocoonServiceImpl, dev_log};
8
9pub async fn Fn(Service:&CocoonServiceImpl, Request:StoreSecretRequest) -> Result<Response<Empty>, Status> {
10	dev_log!("cocoon", "[CocoonService] store_secret: key={}", Request.key);
11
12	match Service
13		.environment
14		.StoreSecret(String::new(), Request.key.clone(), Request.value)
15		.await
16	{
17		Ok(()) => Ok(Response::new(Empty {})),
18
19		Err(Error) => {
20			dev_log!(
21				"cocoon",
22				"warn: [CocoonService] store_secret failed key={}: {}",
23				Request.key,
24				Error
25			);
26
27			Err(Status::internal(format!("store_secret: {}", Error)))
28		},
29	}
30}