maestro-rust-sdk 1.1.2

Rust SDK for the Maestro Dapp Platform
Documentation
use super::maestro::Maestro;
use crate::{
    models::accounts::{
        AccountAddresses, AccountAssets, StakeAccountHistory, StakeAccountInformation,
        StakeAccountRewards, StakeAccountUpdates,
    },
    utils::Parameters,
};
use std::error::Error;

impl Maestro {
    pub async fn account_addresses(
        &self,
        stake_addr: &str,
        params: Option<Parameters>,
    ) -> Result<AccountAddresses, Box<dyn Error>> {
        let formatted_params = params.map(|p| p.format()).unwrap_or_default();
        let url = format!("/accounts/{}/addresses{}", stake_addr, formatted_params);
        let resp = self.get(&url).await?;
        let account_addresses =
            serde_json::from_str(&resp).map_err(|e| Box::new(e) as Box<dyn Error>)?;
        Ok(account_addresses)
    }

    pub async fn account_assets(
        &self,
        stake_addr: &str,
        params: Option<Parameters>,
    ) -> Result<AccountAssets, Box<dyn Error>> {
        let formatted_params = params.map(|p| p.format()).unwrap_or_default();
        let url = format!("/accounts/{}/assets{}", stake_addr, formatted_params);
        let resp = self.get(&url).await?;
        let account_assets =
            serde_json::from_str(&resp).map_err(|e| Box::new(e) as Box<dyn Error>)?;
        Ok(account_assets)
    }

    pub async fn stake_account_history(
        &self,
        stake_addr: &str,
        params: Option<Parameters>,
    ) -> Result<StakeAccountHistory, Box<dyn Error>> {
        let formatted_params = params.map(|p| p.format()).unwrap_or_default();
        let url = format!("/accounts/{}/history{}", stake_addr, formatted_params);
        let resp = self.get(&url).await?;
        let stake_account_history =
            serde_json::from_str(&resp).map_err(|e| Box::new(e) as Box<dyn Error>)?;
        Ok(stake_account_history)
    }

    pub async fn stake_account_information(
        &self,
        stake_addr: &str,
    ) -> Result<StakeAccountInformation, Box<dyn Error>> {
        let url = format!("/accounts/{}", stake_addr);
        let resp = self.get(&url).await?;
        let stake_account_information =
            serde_json::from_str(&resp).map_err(|e| Box::new(e) as Box<dyn Error>)?;
        Ok(stake_account_information)
    }

    pub async fn stake_account_rewards(
        &self,
        stake_addr: &str,
        params: Option<Parameters>,
    ) -> Result<StakeAccountRewards, Box<dyn Error>> {
        let formatted_params = params.map(|p| p.format()).unwrap_or_default();
        let url = format!("/accounts/{}/rewards{}", stake_addr, formatted_params);
        let resp = self.get(&url).await?;
        let stake_account_rewards =
            serde_json::from_str(&resp).map_err(|e| Box::new(e) as Box<dyn Error>)?;
        Ok(stake_account_rewards)
    }

    pub async fn stake_account_updates(
        &self,
        stake_addr: &str,
        params: Option<Parameters>,
    ) -> Result<StakeAccountUpdates, Box<dyn Error>> {
        let formatted_params = params.map(|p| p.format()).unwrap_or_default();
        let url = format!("/accounts/{}/updates{}", stake_addr, formatted_params);
        let resp = self.get(&url).await?;
        let stake_account_updates =
            serde_json::from_str(&resp).map_err(|e| Box::new(e) as Box<dyn Error>)?;
        Ok(stake_account_updates)
    }
}