birdie 0.1.0

Birdie is a third party Binance API client, allowing you to easily interact with the Binance API using Rust.
Documentation
mod close_isolated_margin_user_data_stream;
mod close_margin_user_data_stream;
mod keepalive_isolated_margin_user_data_stream;
mod keepalive_margin_user_data_stream;
mod start_isolated_margin_user_data_stream;
mod start_margin_user_data_stream;

pub use close_isolated_margin_user_data_stream::*;
pub use close_margin_user_data_stream::*;
pub use keepalive_isolated_margin_user_data_stream::*;
pub use keepalive_margin_user_data_stream::*;
use serde::Deserialize;
pub use start_isolated_margin_user_data_stream::*;
pub use start_margin_user_data_stream::*;

use crate::{
    rest_api::{route, RestApiClient},
    spot::user_data_stream::{
        BalanceUpdate, ExecutionReport, ListStatus, ListenKeyExpired, OutboundAccountPosition,
    },
    web_socket_stream::Payload,
};

pub struct RestApiHandler<'r> {
    client: &'r RestApiClient,
}

impl<'r> RestApiHandler<'r> {
    pub fn new(client: &'r RestApiClient) -> Self {
        RestApiHandler { client }
    }

    route!(start_margin_data_stream, StartMarginUserDataStreamEndpoint);
    route!(
        keepalive_margin_data_stream,
        KeepaliveMarginUserDataStreamEndpoint
    );
    route!(close_margin_data_stream, CloseMarginUserDataStreamEndpoint);
    route!(
        start_isolated_margin_data_stream,
        StartIsolatedMarginUserDataStreamEndpoint
    );
    route!(
        keepalive_isolated_margin_data_stream,
        KeepaliveIsolatedMarginUserDataStreamEndpoint
    );
    route!(
        close_isolated_margin_data_stream,
        CloseIsolatedMarginUserDataStreamEndpoint
    );
}

#[derive(Clone, Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
#[serde(tag = "e")]
pub enum TradeUserDataStreamPayload {
    OutboundAccountPosition(OutboundAccountPosition),
    BalanceUpdate(BalanceUpdate),
    ExecutionReport(ExecutionReport),
    ListStatus(ListStatus),
    ListenKeyExpired(ListenKeyExpired),
}

impl Payload for TradeUserDataStreamPayload {}