vaultrs/identity/
entity_alias.rs1use crate::{
2 api::{
3 self,
4 identity::entity_alias::{
5 requests::{
6 CreateEntityAliasRequest, CreateEntityAliasRequestBuilder,
7 DeleteEntityAliasByIdRequest, ListEntityAliasesByIdRequest,
8 ReadEntityAliasByIdRequest, UpdateEntityAliasByIdRequest,
9 UpdateEntityAliasByIdRequestBuilder,
10 },
11 responses::{
12 CreateEntityAliasResponse, ListEntityAliasesByIdResponse,
13 ReadEntityAliasByIdResponse,
14 },
15 },
16 },
17 client::Client,
18 error::ClientError,
19};
20
21pub async fn create(
25 client: &impl Client,
26 name: &str,
27 canonical_id: &str,
28 mount_accessor: &str,
29 opts: Option<&mut CreateEntityAliasRequestBuilder>,
30) -> Result<CreateEntityAliasResponse, ClientError> {
31 let mut t = CreateEntityAliasRequest::builder();
32 let endpoint = opts
33 .unwrap_or(&mut t)
34 .name(name)
35 .canonical_id(canonical_id)
36 .mount_accessor(mount_accessor)
37 .build()
38 .unwrap();
39 api::exec_with_result(client, endpoint)
40 .await
41 .map_err(|err| {
42 if matches!(
44 err,
45 ClientError::RestClientError {
46 source: rustify::errors::ClientError::ResponseParseError { .. }
47 }
48 ) {
49 return ClientError::InvalidUpdateParameter;
50 }
51 err
52 })
53}
54
55pub async fn read_by_id(
59 client: &impl Client,
60 id: &str,
61) -> Result<ReadEntityAliasByIdResponse, ClientError> {
62 let endpoint = ReadEntityAliasByIdRequest::builder()
63 .id(id)
64 .build()
65 .unwrap();
66
67 api::exec_with_result(client, endpoint).await
68}
69
70pub async fn update_by_id(
74 client: &impl Client,
75 id: &str,
76 opts: Option<&mut UpdateEntityAliasByIdRequestBuilder>,
77) -> Result<(), ClientError> {
78 let mut t = UpdateEntityAliasByIdRequest::builder();
79 let endpoint = opts.unwrap_or(&mut t).id(id).build().unwrap();
80 api::exec_with_empty(client, endpoint).await
81}
82
83pub async fn delete_by_id(client: &impl Client, id: &str) -> Result<(), ClientError> {
87 let endpoint = DeleteEntityAliasByIdRequest::builder()
88 .id(id)
89 .build()
90 .unwrap();
91 api::exec_with_empty(client, endpoint).await
92}
93
94pub async fn list_by_id(
98 client: &impl Client,
99) -> Result<ListEntityAliasesByIdResponse, ClientError> {
100 let endpoint = ListEntityAliasesByIdRequest::builder().build().unwrap();
101 api::exec_with_result(client, endpoint).await
102}