lisk-api-rust-client 0.1.0

Rust API Client for LISK Blockchain
Documentation
use http::client::Client;
use std::borrow::Borrow;

use api::models::{DelegateWithAccount, Forger, ForgingStats};
use api::Result;

pub struct Delegates {
    client: Client,
}

impl Delegates {
    pub fn new(client: Client) -> Delegates {
        Delegates { client }
    }

    pub fn all(&self) -> Result<Vec<DelegateWithAccount>> {
        self.all_params(Vec::<(String, String)>::new())
    }

    pub fn all_params<I, K, V>(&self, parameters: I) -> Result<Vec<DelegateWithAccount>>
    where
        I: IntoIterator,
        I::Item: Borrow<(K, V)>,
        K: AsRef<str>,
        V: AsRef<str>,
    {
        self.client.get_with_params("delegates", parameters)
    }

    pub fn forgers(&self) -> Result<Vec<Forger>> {
        self.forgers_params(Vec::<(String, String)>::new())
    }

    pub fn forgers_params<I, K, V>(&self, parameters: I) -> Result<Vec<Forger>>
    where
        I: IntoIterator,
        I::Item: Borrow<(K, V)>,
        K: AsRef<str>,
        V: AsRef<str>,
    {
        self.client.get_with_params("delegates/forgers", parameters)
    }

    pub fn forging_statistics(&self, address: &str) -> Result<Vec<ForgingStats>> {
        self.forging_statistics_params(address, Vec::<(String, String)>::new())
    }

    pub fn forging_statistics_params<I, K, V>(
        &self,
        address: &str,
        parameters: I,
    ) -> Result<Vec<ForgingStats>>
    where
        I: IntoIterator,
        I::Item: Borrow<(K, V)>,
        K: AsRef<str>,
        V: AsRef<str>,
    {
        let endpoint = format!("/delegates/{}/forging_statistics", address);
        self.client.get_with_params(&endpoint, parameters)
    }
}