use super::VtaClient;
use crate::error::VtaError;
use crate::protocols::policy_management::{
DeletePolicyBody, DeletePolicyResultBody, GetPolicyBody, GetPolicyResultBody, ListPoliciesBody,
ListPoliciesResultBody, UpsertPolicyBody, UpsertPolicyResultBody,
};
#[cfg(feature = "client")]
impl VtaClient {
pub async fn list_policies(
&self,
req: ListPoliciesBody,
) -> Result<ListPoliciesResultBody, VtaError> {
self.rpc_tt(
crate::trust_tasks::TASK_POLICY_LIST_0_2,
serde_json::to_value(&req)?,
30,
|c, url| c.get(format!("{url}/policies")),
)
.await
}
pub async fn get_policy(&self, id: &str) -> Result<GetPolicyResultBody, VtaError> {
let req = GetPolicyBody { id: id.to_string() };
self.rpc_tt(
crate::trust_tasks::TASK_POLICY_GET_0_1,
serde_json::to_value(&req)?,
30,
|c, url| c.get(format!("{url}/policies/{id}")),
)
.await
}
pub async fn upsert_policy(
&self,
req: UpsertPolicyBody,
) -> Result<UpsertPolicyResultBody, VtaError> {
self.rpc_tt(
crate::trust_tasks::TASK_POLICY_UPSERT_0_2,
serde_json::to_value(&req)?,
30,
|c, url| c.put(format!("{url}/policies")).json(&req),
)
.await
}
pub async fn delete_policy(
&self,
req: DeletePolicyBody,
) -> Result<DeletePolicyResultBody, VtaError> {
let id = req.id.clone();
self.rpc_tt(
crate::trust_tasks::TASK_POLICY_DELETE_0_1,
serde_json::to_value(&req)?,
30,
|c, url| c.delete(format!("{url}/policies/{id}")).json(&req),
)
.await
}
}