rusftx 0.4.0

Rust bindings for the FTX REST and Websocket API
Documentation
use crate::rest::model::order::Order;
use crate::ws::incoming_message::UpdateType;

#[derive(Debug)]
pub struct OrdersUpdateMessage {
    pub order: Order,
}

#[derive(Debug, serde::Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RawOrdersUpdateMessage {
    #[serde(rename = "type")]
    _type: UpdateType,
    #[serde(rename = "channel")]
    _channel: OrdersChannel,
    data: Order,
}

#[derive(Debug, serde::Deserialize)]
pub enum OrdersChannel {
    #[serde(rename = "orders")]
    Orders,
}

impl From<RawOrdersUpdateMessage> for OrdersUpdateMessage {
    fn from(raw_orders_message: RawOrdersUpdateMessage) -> Self {
        Self {
            order: raw_orders_message.data,
        }
    }
}

#[cfg(test)]
mod tests {
    #[test]
    fn deserialize_from_json() {
        let json = include_str!("../../../tests/ws/orders_message.json");
        let _message: super::RawOrdersUpdateMessage = serde_json::from_str(json).unwrap();
    }
}