kiteticker_async_manager/models/
ticker_message.rs

1use crate::{Order, TextMessage, TickMessage};
2
3use super::text_message::TextMessageType;
4
5#[derive(Debug, Clone)]
6///
7/// Parsed message from websocket
8///
9pub enum TickerMessage {
10  /// Quote packets for subscribed tokens
11  Ticks(Vec<TickMessage>),
12  /// Error response
13  Error(String),
14  /// Order postback
15  OrderPostback(Result<Order, String>),
16  /// Messages and alerts from broker
17  Message(serde_json::Value),
18  /// Websocket closing frame
19  ClosingMessage(serde_json::Value),
20}
21
22impl From<TextMessage> for TickerMessage {
23  fn from(value: TextMessage) -> Self {
24    let message_type: TextMessageType = value.message_type.into();
25    match message_type {
26      TextMessageType::Order => Self::OrderPostback(
27        serde_json::from_value(value.data).map_err(|e| e.to_string()),
28      ),
29      TextMessageType::Error => Self::Error(value.data.to_string()),
30      TextMessageType::Message => Self::Message(value.data),
31    }
32  }
33}