binance-spot 0.2.3

Binance Spot API client implementation with REST support for spot trading.
Documentation
use binance_common::spot::endpoint::route::Market;
use binance_common::spot::model::params::market::*;
use binance_common::spot::model::response::market::{
    AvgPriceResponse, BookTickerResponse, HistoricalTradesResponse, KlinesResponse,
    PriceTickerResponse, RollingTickerMiniResponse, Ticker24hFullResponse, Ticker24hMiniResponse,
    TickerDayFullResponse, TickerDayMiniResponse, TradesResponse,
};
use binance_common::{error::BinanceError, spot::model::response::market::DepthResponse};
use binance_core::{client::synchronous::Client, signer::signature::Signature};

pub struct MarketApi<'a, S>
where
    S: Signature<'a>,
{
    client: Client<'a, S>,
}

impl<'a, S> MarketApi<'a, S>
where
    S: Signature<'a>,
{
    pub fn new(client: Client<'a, S>) -> Self {
        MarketApi { client }
    }

    pub fn get_depth(&self, params: &DepthParams) -> Result<DepthResponse, BinanceError> {
        self.client.get(Market::Depth, params)
    }

    pub fn get_trades(&self, params: &TradesParams) -> Result<Vec<TradesResponse>, BinanceError> {
        self.client.get(Market::Trades, params)
    }

    pub fn get_historical_trades(
        &self,
        params: &HistoricalTradesParams,
    ) -> Result<Vec<HistoricalTradesResponse>, BinanceError> {
        self.client.get(Market::HistoricalTrades, params)
    }

    pub fn get_klines(&self, params: &KlinesParams) -> Result<Vec<KlinesResponse>, BinanceError> {
        self.client.get(Market::Klines, params)
    }

    pub fn get_uiklines(&self, params: &KlinesParams) -> Result<Vec<KlinesResponse>, BinanceError> {
        self.client.get(Market::UIKlines, params)
    }

    pub fn get_average_price(
        &self,
        params: &AvgPriceParams,
    ) -> Result<AvgPriceResponse, BinanceError> {
        self.client.get(Market::AvgPrice, params)
    }

    pub fn get_ticker24h_mini(
        &self,
        params: &Ticker24hParams,
    ) -> Result<Ticker24hMiniResponse, BinanceError> {
        self.client.get(Market::Ticker24h, params)
    }

    pub fn get_ticker24h_full(
        &self,
        params: &Ticker24hParams,
    ) -> Result<Ticker24hFullResponse, BinanceError> {
        self.client.get(Market::Ticker24h, params)
    }

    pub fn get_ticker24h_mini_list(
        &self,
        params: &Ticker24hParams,
    ) -> Result<Vec<Ticker24hMiniResponse>, BinanceError> {
        self.client.get(Market::Ticker24h, params)
    }

    pub fn get_ticker24h_full_list(
        &self,
        params: &Ticker24hParams,
    ) -> Result<Vec<Ticker24hFullResponse>, BinanceError> {
        self.client.get(Market::Ticker24h, params)
    }

    pub fn get_ticker_day_mini(
        &self,
        params: &TickerDayParams,
    ) -> Result<TickerDayMiniResponse, BinanceError> {
        self.client.get(Market::TickerDay, params)
    }

    pub fn get_ticker_day_full(
        &self,
        params: &TickerDayParams,
    ) -> Result<TickerDayFullResponse, BinanceError> {
        self.client.get(Market::TickerDay, params)
    }

    pub fn get_ticker_day_mini_list(
        &self,
        params: &TickerDayParams,
    ) -> Result<Vec<TickerDayMiniResponse>, BinanceError> {
        self.client.get(Market::TickerDay, params)
    }

    pub fn get_ticker_day_full_list(
        &self,
        params: &TickerDayParams,
    ) -> Result<Vec<TickerDayFullResponse>, BinanceError> {
        self.client.get(Market::TickerDay, params)
    }

    pub fn get_price_ticker(&self, symbol: &str) -> Result<PriceTickerResponse, BinanceError> {
        let params = PriceTickerParams::new().symbol(symbol);

        self.client.get(Market::TickerPrice, params)
    }

    pub fn get_price_ticker_list(
        &self,
        symbols: &str,
    ) -> Result<Vec<PriceTickerResponse>, BinanceError> {
        let params = PriceTickerParams::new().symbols(symbols);

        self.client.get(Market::TickerPrice, params)
    }

    pub fn get_book_ticker(&self, symbol: &str) -> Result<BookTickerResponse, BinanceError> {
        let params = BookTickerParams::new().symbol(symbol);

        self.client.get(Market::BookTicker, params)
    }

    pub fn get_book_ticker_list(
        &self,
        symbols: &str,
    ) -> Result<Vec<BookTickerResponse>, BinanceError> {
        let params = BookTickerParams::new().symbols(symbols);

        self.client.get(Market::BookTicker, params)
    }

    pub fn get_rolling_ticker_mini(
        &self,
        params: &RollingTickerParams,
    ) -> Result<RollingTickerMiniResponse, BinanceError> {
        self.client.get(Market::RollingTicker, params)
    }

    pub fn get_rolling_ticker_mini_list(
        &self,
        params: &RollingTickerParams,
    ) -> Result<Vec<RollingTickerMiniResponse>, BinanceError> {
        self.client.get(Market::RollingTicker, params)
    }

    pub fn get_rolling_ticker_full(
        &self,
        params: &RollingTickerParams,
    ) -> Result<RollingTickerMiniResponse, BinanceError> {
        self.client.get(Market::RollingTicker, params)
    }

    pub fn get_rolling_ticker_full_list(
        &self,
        params: &RollingTickerParams,
    ) -> Result<Vec<RollingTickerMiniResponse>, BinanceError> {
        self.client.get(Market::RollingTicker, params)
    }
}