Async client for the Kite Connect WebSocket API
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 79 lines 1.6 kB view raw
1use serde::{Deserialize, Serialize}; 2 3use crate::Mode; 4 5#[derive(Clone, Debug, Deserialize, Serialize)] 6#[serde(rename_all = "lowercase")] 7/// 8/// Websocket request actions 9/// 10enum RequestActions { 11 Subscribe, 12 Unsubscribe, 13 Mode, 14} 15 16#[derive(Clone, Debug, Deserialize, Serialize)] 17#[serde(untagged)] 18/// 19/// Websocket request data 20/// 21enum RequestData { 22 InstrumentTokens(Vec<u32>), 23 InstrumentTokensWithMode(Mode, Vec<u32>), 24} 25 26#[derive(Debug, Clone, Deserialize, Serialize)] 27/// 28/// Websocket request structure 29/// 30pub struct Request { 31 a: RequestActions, 32 v: RequestData, 33} 34 35impl Request { 36 fn new(action: RequestActions, value: RequestData) -> Request { 37 Request { 38 a: action, 39 v: value, 40 } 41 } 42 43 /// 44 /// Subscribe to a list of instrument tokens 45 /// 46 pub fn subscribe(instrument_tokens: Vec<u32>) -> Request { 47 Request::new( 48 RequestActions::Subscribe, 49 RequestData::InstrumentTokens(instrument_tokens), 50 ) 51 } 52 53 /// 54 /// Subscribe to a list of instrument tokens with mode 55 /// 56 pub fn mode(mode: Mode, instrument_tokens: Vec<u32>) -> Request { 57 Request::new( 58 RequestActions::Mode, 59 RequestData::InstrumentTokensWithMode(mode, instrument_tokens), 60 ) 61 } 62 63 /// 64 /// Unsubscribe from a list of instrument tokens 65 /// 66 pub fn unsubscribe(instrument_tokens: Vec<u32>) -> Request { 67 Request::new( 68 RequestActions::Unsubscribe, 69 RequestData::InstrumentTokens(instrument_tokens), 70 ) 71 } 72} 73 74impl ToString for Request { 75 fn to_string(&self) -> String { 76 serde_json::to_string(self) 77 .expect("failed to serialize TickerInput to JSON") 78 } 79}