rusftx/ws/incoming_message/
orders.rs

1use crate::rest::model::order::Order;
2use crate::ws::incoming_message::UpdateType;
3
4#[derive(Debug)]
5pub struct OrdersUpdateMessage {
6    pub order: Order,
7}
8
9#[derive(Debug, serde::Deserialize)]
10#[serde(rename_all = "camelCase")]
11pub struct RawOrdersUpdateMessage {
12    #[serde(rename = "type")]
13    _type: UpdateType,
14    #[serde(rename = "channel")]
15    _channel: OrdersChannel,
16    data: Order,
17}
18
19#[derive(Debug, serde::Deserialize)]
20pub enum OrdersChannel {
21    #[serde(rename = "orders")]
22    Orders,
23}
24
25impl From<RawOrdersUpdateMessage> for OrdersUpdateMessage {
26    fn from(raw_orders_message: RawOrdersUpdateMessage) -> Self {
27        Self {
28            order: raw_orders_message.data,
29        }
30    }
31}
32
33#[cfg(test)]
34mod tests {
35    #[test]
36    fn deserialize_from_json() {
37        let json = include_str!("../../../tests/ws/orders_message.json");
38        let _message: super::RawOrdersUpdateMessage = serde_json::from_str(json).unwrap();
39    }
40}