#![allow(deprecated)]
use serde_json::{Value, json};
use super::VtaClient;
use crate::error::VtaError;
use crate::trust_tasks;
const VAULT_TT_TIMEOUT: u64 = 30;
impl VtaClient {
pub async fn vault_list(&self, filters: Value) -> Result<Value, VtaError> {
self.dispatch_trust_task(trust_tasks::TASK_VAULT_LIST_0_1, filters, VAULT_TT_TIMEOUT)
.await
}
pub async fn vault_get(&self, id: &str) -> Result<Value, VtaError> {
self.dispatch_trust_task(
trust_tasks::TASK_VAULT_GET_0_1,
json!({ "id": id }),
VAULT_TT_TIMEOUT,
)
.await
}
pub async fn vault_upsert(
&self,
mut payload: Value,
sealed_secret: Option<Value>,
) -> Result<Value, VtaError> {
if let Some(env) = sealed_secret
&& let Some(obj) = payload.as_object_mut()
{
obj.insert("sealedSecret".to_string(), env);
}
self.dispatch_trust_task(
trust_tasks::TASK_VAULT_UPSERT_0_1,
payload,
VAULT_TT_TIMEOUT,
)
.await
}
pub async fn vault_delete(
&self,
id: &str,
expected_version: Option<u32>,
force: bool,
reason: Option<&str>,
) -> Result<Value, VtaError> {
let mut payload = json!({ "id": id, "force": force });
if let Some(v) = expected_version {
payload["expectedVersion"] = json!(v);
}
if let Some(r) = reason {
payload["reason"] = json!(r);
}
self.dispatch_trust_task(
trust_tasks::TASK_VAULT_DELETE_0_1,
payload,
VAULT_TT_TIMEOUT,
)
.await
}
pub async fn vault_archive(
&self,
id: &str,
expected_version: Option<u32>,
reason: Option<&str>,
) -> Result<Value, VtaError> {
self.vault_lifecycle(
trust_tasks::TASK_VAULT_ARCHIVE_0_1,
id,
expected_version,
reason,
)
.await
}
pub async fn vault_unarchive(
&self,
id: &str,
expected_version: Option<u32>,
reason: Option<&str>,
) -> Result<Value, VtaError> {
self.vault_lifecycle(
trust_tasks::TASK_VAULT_UNARCHIVE_0_1,
id,
expected_version,
reason,
)
.await
}
pub async fn vault_restore(
&self,
id: &str,
expected_version: Option<u32>,
reason: Option<&str>,
) -> Result<Value, VtaError> {
self.vault_lifecycle(
trust_tasks::TASK_VAULT_RESTORE_0_1,
id,
expected_version,
reason,
)
.await
}
pub async fn vault_purge(
&self,
id: &str,
expected_version: Option<u32>,
reason: Option<&str>,
) -> Result<Value, VtaError> {
self.vault_lifecycle(
trust_tasks::TASK_VAULT_PURGE_0_1,
id,
expected_version,
reason,
)
.await
}
async fn vault_lifecycle(
&self,
task: &str,
id: &str,
expected_version: Option<u32>,
reason: Option<&str>,
) -> Result<Value, VtaError> {
let mut payload = json!({ "id": id });
if let Some(v) = expected_version {
payload["expectedVersion"] = json!(v);
}
if let Some(r) = reason {
payload["reason"] = json!(r);
}
self.dispatch_trust_task(task, payload, VAULT_TT_TIMEOUT)
.await
}
pub async fn vault_release(&self, payload: Value) -> Result<Value, VtaError> {
self.dispatch_trust_task(
trust_tasks::TASK_VAULT_RELEASE_0_1,
payload,
VAULT_TT_TIMEOUT,
)
.await
}
pub async fn vault_proxy_login(&self, payload: Value) -> Result<Value, VtaError> {
self.dispatch_trust_task(
trust_tasks::TASK_VAULT_PROXY_LOGIN_0_1,
payload,
VAULT_TT_TIMEOUT,
)
.await
}
pub async fn vault_sign_trust_task(&self, payload: Value) -> Result<Value, VtaError> {
self.dispatch_trust_task(
trust_tasks::TASK_VAULT_SIGN_TRUST_TASK_0_1,
payload,
VAULT_TT_TIMEOUT,
)
.await
}
pub async fn cred_vault_receive(
&self,
credential: Value,
id: Option<&str>,
) -> Result<Value, VtaError> {
let mut payload = json!({ "credential": credential });
if let Some(id) = id
&& let Some(obj) = payload.as_object_mut()
{
obj.insert("id".to_string(), json!(id));
}
self.dispatch_trust_task(
trust_tasks::TASK_VAULT_CREDENTIALS_RECEIVE_0_1,
payload,
VAULT_TT_TIMEOUT,
)
.await
}
pub async fn cred_vault_query(&self, filter: Value) -> Result<Value, VtaError> {
self.dispatch_trust_task(
trust_tasks::TASK_VAULT_CREDENTIALS_QUERY_0_1,
filter,
VAULT_TT_TIMEOUT,
)
.await
}
pub async fn cred_vault_get(&self, id: &str) -> Result<Value, VtaError> {
self.dispatch_trust_task(
trust_tasks::TASK_VAULT_CREDENTIALS_GET_0_1,
json!({ "id": id }),
VAULT_TT_TIMEOUT,
)
.await
}
pub async fn cred_vault_archive(
&self,
id: &str,
reason: Option<&str>,
) -> Result<Value, VtaError> {
self.cred_lifecycle(
trust_tasks::TASK_VAULT_CREDENTIALS_ARCHIVE_0_1,
id,
false,
reason,
)
.await
}
pub async fn cred_vault_unarchive(
&self,
id: &str,
reason: Option<&str>,
) -> Result<Value, VtaError> {
self.cred_lifecycle(
trust_tasks::TASK_VAULT_CREDENTIALS_UNARCHIVE_0_1,
id,
false,
reason,
)
.await
}
pub async fn cred_vault_delete(
&self,
id: &str,
force: bool,
reason: Option<&str>,
) -> Result<Value, VtaError> {
self.cred_lifecycle(
trust_tasks::TASK_VAULT_CREDENTIALS_DELETE_0_1,
id,
force,
reason,
)
.await
}
pub async fn cred_vault_restore(
&self,
id: &str,
reason: Option<&str>,
) -> Result<Value, VtaError> {
self.cred_lifecycle(
trust_tasks::TASK_VAULT_CREDENTIALS_RESTORE_0_1,
id,
false,
reason,
)
.await
}
pub async fn cred_vault_purge(
&self,
id: &str,
reason: Option<&str>,
) -> Result<Value, VtaError> {
self.cred_lifecycle(
trust_tasks::TASK_VAULT_CREDENTIALS_PURGE_0_1,
id,
false,
reason,
)
.await
}
async fn cred_lifecycle(
&self,
task: &str,
id: &str,
force: bool,
reason: Option<&str>,
) -> Result<Value, VtaError> {
let mut payload = json!({ "id": id, "force": force });
if let Some(r) = reason {
payload["reason"] = json!(r);
}
self.dispatch_trust_task(task, payload, VAULT_TT_TIMEOUT)
.await
}
}