ex3-secret-router-client 0.10.0

Secret router canister client-canister.
Documentation
use std::sync::Arc;

use async_trait::async_trait;
use ex3_canister_types::CanisterId;

use ex3_canister_client::canister_call_wrapper::call;
use ex3_canister_client::{ActorResult, CanisterResult};
use ex3_secret_vault_public_types::SecretVaultSetting;

use crate::SecretRouter;

#[derive(Debug)]
pub struct SecretRouterClient {
    pub canister_id: Arc<CanisterId>,
}

#[allow(dead_code)]
impl SecretRouterClient {
    pub fn new(canister_id: CanisterId) -> Self {
        Self {
            canister_id: Arc::new(canister_id),
        }
    }
}

#[async_trait]
impl SecretRouter for SecretRouterClient {
    async fn accept_new_secret_vault(
        &self,
        secret_vault_id: CanisterId,
        secret_vault_setting: SecretVaultSetting,
    ) -> CanisterResult<ActorResult<()>> {
        call(
            &self.canister_id,
            "accept_new_secret_vault",
            (secret_vault_id, secret_vault_setting),
        )
        .await
    }
}