rusftx/ws/incoming_message/
orders.rs1use 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}