Skip to main content

Mountain/RPC/CocoonService/Secret/
StoreSecret.rs

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