#[allow(unused_imports)]
use super::types::*;
#[derive(Clone)]
pub struct DelegatedVaultsClient {
client: crate::client::Client,
}
impl DelegatedVaultsClient {
pub fn new(client: crate::client::Client) -> Self {
DelegatedVaultsClient { client }
}
pub async fn list_vaults(
&self,
query: Option<ListVaultsQuery>,
) -> Result<ListVaultsResponse, crate::error::Error> {
let mut path = String::from("/vaults");
if let Some(query) = &query {
let mut q: Vec<String> = Vec::new();
if let Some(v) = &query.limit {
q.push(format!("limit={}", urlencoding::encode(&v.to_string())));
}
if let Some(v) = &query.pagination_token {
q.push(format!(
"paginationToken={}",
urlencoding::encode(&v.to_string())
));
}
if !q.is_empty() {
path.push('?');
path.push_str(&q.join("&"));
}
}
self.client
.request::<ListVaultsResponse>(reqwest::Method::GET, &path, None, false)
.await
}
pub async fn create_vault_init(
&self,
body: CreateVaultRequest,
) -> Result<crate::signer::UserActionChallenge, crate::error::Error> {
let path = String::from("/vaults");
let body = serde_json::to_value(&body)?;
self.client
.create_user_action_challenge(reqwest::Method::POST, &path, Some(&body))
.await
}
pub async fn create_vault_complete(
&self,
body: CreateVaultRequest,
challenge_identifier: String,
assertion: crate::signer::CredentialAssertion,
) -> Result<CreateVaultResponse, crate::error::Error> {
let path = String::from("/vaults");
let body = serde_json::to_value(&body)?;
let user_action = self
.client
.complete_user_action_signing(challenge_identifier, &assertion)
.await?;
self.client
.request_with_user_action::<CreateVaultResponse>(
reqwest::Method::POST,
&path,
Some(&body),
&user_action,
)
.await
}
pub async fn create_vault_address_init(
&self,
vault_id: String,
body: CreateVaultAddressRequest,
) -> Result<crate::signer::UserActionChallenge, crate::error::Error> {
let path = format!("/vaults/{}/addresses", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
self.client
.create_user_action_challenge(reqwest::Method::POST, &path, Some(&body))
.await
}
pub async fn create_vault_address_complete(
&self,
vault_id: String,
body: CreateVaultAddressRequest,
challenge_identifier: String,
assertion: crate::signer::CredentialAssertion,
) -> Result<CreateVaultAddressResponse, crate::error::Error> {
let path = format!("/vaults/{}/addresses", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
let user_action = self
.client
.complete_user_action_signing(challenge_identifier, &assertion)
.await?;
self.client
.request_with_user_action::<CreateVaultAddressResponse>(
reqwest::Method::POST,
&path,
Some(&body),
&user_action,
)
.await
}
pub async fn list_vault_locks(
&self,
vault_id: String,
query: Option<ListVaultLocksQuery>,
) -> Result<ListVaultLocksResponse, crate::error::Error> {
let mut path = format!("/vaults/{}/locks", urlencoding::encode(&vault_id));
if let Some(query) = &query {
let mut q: Vec<String> = Vec::new();
if let Some(v) = &query.limit {
q.push(format!("limit={}", urlencoding::encode(&v.to_string())));
}
if let Some(v) = &query.pagination_token {
q.push(format!(
"paginationToken={}",
urlencoding::encode(&v.to_string())
));
}
if let Some(v) = &query.network {
q.push(format!("network={}", urlencoding::encode(&v.to_string())));
}
if let Some(v) = &query.tid {
q.push(format!("tid={}", urlencoding::encode(&v.to_string())));
}
if !q.is_empty() {
path.push('?');
path.push_str(&q.join("&"));
}
}
self.client
.request::<ListVaultLocksResponse>(reqwest::Method::GET, &path, None, false)
.await
}
pub async fn create_vault_lock_init(
&self,
vault_id: String,
body: CreateVaultLockRequest,
) -> Result<crate::signer::UserActionChallenge, crate::error::Error> {
let path = format!("/vaults/{}/locks", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
self.client
.create_user_action_challenge(reqwest::Method::POST, &path, Some(&body))
.await
}
pub async fn create_vault_lock_complete(
&self,
vault_id: String,
body: CreateVaultLockRequest,
challenge_identifier: String,
assertion: crate::signer::CredentialAssertion,
) -> Result<CreateVaultLockResponse, crate::error::Error> {
let path = format!("/vaults/{}/locks", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
let user_action = self
.client
.complete_user_action_signing(challenge_identifier, &assertion)
.await?;
self.client
.request_with_user_action::<CreateVaultLockResponse>(
reqwest::Method::POST,
&path,
Some(&body),
&user_action,
)
.await
}
pub async fn create_vault_transfer_init(
&self,
vault_id: String,
body: CreateVaultTransferRequest,
) -> Result<crate::signer::UserActionChallenge, crate::error::Error> {
let path = format!("/vaults/{}/transfers", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
self.client
.create_user_action_challenge(reqwest::Method::POST, &path, Some(&body))
.await
}
pub async fn create_vault_transfer_complete(
&self,
vault_id: String,
body: CreateVaultTransferRequest,
challenge_identifier: String,
assertion: crate::signer::CredentialAssertion,
) -> Result<CreateVaultTransferResponse, crate::error::Error> {
let path = format!("/vaults/{}/transfers", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
let user_action = self
.client
.complete_user_action_signing(challenge_identifier, &assertion)
.await?;
self.client
.request_with_user_action::<CreateVaultTransferResponse>(
reqwest::Method::POST,
&path,
Some(&body),
&user_action,
)
.await
}
pub async fn get_vault_lock(
&self,
vault_id: String,
lock_id: String,
) -> Result<GetVaultLockResponse, crate::error::Error> {
let path = format!(
"/vaults/{}/locks/{}",
urlencoding::encode(&vault_id),
urlencoding::encode(&lock_id)
);
self.client
.request::<GetVaultLockResponse>(reqwest::Method::GET, &path, None, false)
.await
}
pub async fn delete_vault_lock_init(
&self,
vault_id: String,
lock_id: String,
) -> Result<crate::signer::UserActionChallenge, crate::error::Error> {
let path = format!(
"/vaults/{}/locks/{}",
urlencoding::encode(&vault_id),
urlencoding::encode(&lock_id)
);
self.client
.create_user_action_challenge(reqwest::Method::DELETE, &path, None)
.await
}
pub async fn delete_vault_lock_complete(
&self,
vault_id: String,
lock_id: String,
challenge_identifier: String,
assertion: crate::signer::CredentialAssertion,
) -> Result<DeleteVaultLockResponse, crate::error::Error> {
let path = format!(
"/vaults/{}/locks/{}",
urlencoding::encode(&vault_id),
urlencoding::encode(&lock_id)
);
let user_action = self
.client
.complete_user_action_signing(challenge_identifier, &assertion)
.await?;
self.client
.request_with_user_action::<DeleteVaultLockResponse>(
reqwest::Method::DELETE,
&path,
None,
&user_action,
)
.await
}
pub async fn get_vault(
&self,
vault_id: String,
) -> Result<GetVaultResponse, crate::error::Error> {
let path = format!("/vaults/{}", urlencoding::encode(&vault_id));
self.client
.request::<GetVaultResponse>(reqwest::Method::GET, &path, None, false)
.await
}
pub async fn update_vault_init(
&self,
vault_id: String,
body: UpdateVaultRequest,
) -> Result<crate::signer::UserActionChallenge, crate::error::Error> {
let path = format!("/vaults/{}", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
self.client
.create_user_action_challenge(reqwest::Method::PUT, &path, Some(&body))
.await
}
pub async fn update_vault_complete(
&self,
vault_id: String,
body: UpdateVaultRequest,
challenge_identifier: String,
assertion: crate::signer::CredentialAssertion,
) -> Result<UpdateVaultResponse, crate::error::Error> {
let path = format!("/vaults/{}", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
let user_action = self
.client
.complete_user_action_signing(challenge_identifier, &assertion)
.await?;
self.client
.request_with_user_action::<UpdateVaultResponse>(
reqwest::Method::PUT,
&path,
Some(&body),
&user_action,
)
.await
}
pub async fn list_vault_assets(
&self,
vault_id: String,
query: Option<ListVaultAssetsQuery>,
) -> Result<ListVaultAssetsResponse, crate::error::Error> {
let mut path = format!("/vaults/{}/assets", urlencoding::encode(&vault_id));
if let Some(query) = &query {
let mut q: Vec<String> = Vec::new();
if let Some(v) = &query.show_unverified {
q.push(format!(
"showUnverified={}",
urlencoding::encode(&v.to_string())
));
}
if let Some(v) = &query.network {
q.push(format!("network={}", urlencoding::encode(&v.to_string())));
}
if !q.is_empty() {
path.push('?');
path.push_str(&q.join("&"));
}
}
self.client
.request::<ListVaultAssetsResponse>(reqwest::Method::GET, &path, None, false)
.await
}
pub async fn list_vault_balances(
&self,
vault_id: String,
query: Option<ListVaultBalancesQuery>,
) -> Result<ListVaultBalancesResponse, crate::error::Error> {
let mut path = format!("/vaults/{}/balances", urlencoding::encode(&vault_id));
if let Some(query) = &query {
let mut q: Vec<String> = Vec::new();
if let Some(v) = &query.limit {
q.push(format!("limit={}", urlencoding::encode(&v.to_string())));
}
if let Some(v) = &query.pagination_token {
q.push(format!(
"paginationToken={}",
urlencoding::encode(&v.to_string())
));
}
if let Some(v) = &query.kind {
q.push(format!("kind={}", urlencoding::encode(&v.to_string())));
}
if let Some(v) = &query.network {
q.push(format!("network={}", urlencoding::encode(&v.to_string())));
}
if let Some(v) = &query.tid {
q.push(format!("tid={}", urlencoding::encode(&v.to_string())));
}
if !q.is_empty() {
path.push('?');
path.push_str(&q.join("&"));
}
}
self.client
.request::<ListVaultBalancesResponse>(reqwest::Method::GET, &path, None, false)
.await
}
pub async fn release_quarantine_init(
&self,
vault_id: String,
quarantine_id: String,
body: ReleaseQuarantineRequest,
) -> Result<crate::signer::UserActionChallenge, crate::error::Error> {
let path = format!(
"/vaults/{}/quarantines/{}/release",
urlencoding::encode(&vault_id),
urlencoding::encode(&quarantine_id)
);
let body = serde_json::to_value(&body)?;
self.client
.create_user_action_challenge(reqwest::Method::POST, &path, Some(&body))
.await
}
pub async fn release_quarantine_complete(
&self,
vault_id: String,
quarantine_id: String,
body: ReleaseQuarantineRequest,
challenge_identifier: String,
assertion: crate::signer::CredentialAssertion,
) -> Result<ReleaseQuarantineResponse, crate::error::Error> {
let path = format!(
"/vaults/{}/quarantines/{}/release",
urlencoding::encode(&vault_id),
urlencoding::encode(&quarantine_id)
);
let body = serde_json::to_value(&body)?;
let user_action = self
.client
.complete_user_action_signing(challenge_identifier, &assertion)
.await?;
self.client
.request_with_user_action::<ReleaseQuarantineResponse>(
reqwest::Method::POST,
&path,
Some(&body),
&user_action,
)
.await
}
pub async fn tag_vault_init(
&self,
vault_id: String,
body: TagVaultRequest,
) -> Result<crate::signer::UserActionChallenge, crate::error::Error> {
let path = format!("/vaults/{}/tags", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
self.client
.create_user_action_challenge(reqwest::Method::PUT, &path, Some(&body))
.await
}
pub async fn tag_vault_complete(
&self,
vault_id: String,
body: TagVaultRequest,
challenge_identifier: String,
assertion: crate::signer::CredentialAssertion,
) -> Result<TagVaultResponse, crate::error::Error> {
let path = format!("/vaults/{}/tags", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
let user_action = self
.client
.complete_user_action_signing(challenge_identifier, &assertion)
.await?;
self.client
.request_with_user_action::<TagVaultResponse>(
reqwest::Method::PUT,
&path,
Some(&body),
&user_action,
)
.await
}
pub async fn untag_vault_init(
&self,
vault_id: String,
body: UntagVaultRequest,
) -> Result<crate::signer::UserActionChallenge, crate::error::Error> {
let path = format!("/vaults/{}/tags", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
self.client
.create_user_action_challenge(reqwest::Method::DELETE, &path, Some(&body))
.await
}
pub async fn untag_vault_complete(
&self,
vault_id: String,
body: UntagVaultRequest,
challenge_identifier: String,
assertion: crate::signer::CredentialAssertion,
) -> Result<UntagVaultResponse, crate::error::Error> {
let path = format!("/vaults/{}/tags", urlencoding::encode(&vault_id));
let body = serde_json::to_value(&body)?;
let user_action = self
.client
.complete_user_action_signing(challenge_identifier, &assertion)
.await?;
self.client
.request_with_user_action::<UntagVaultResponse>(
reqwest::Method::DELETE,
&path,
Some(&body),
&user_action,
)
.await
}
}