Async client for the Kite Connect WebSocket API
0
fork

Configure Feed

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

feat: add order model

ref: #3

+113 -2
+2 -2
src/lib.rs
··· 51 51 //! ``` 52 52 mod models; 53 53 pub use models::{ 54 - Depth, DepthItem, Exchange, Mode, Request, TextMessage, TickMessage, 55 - TickerMessage, OHLC, Tick 54 + Depth, DepthItem, Exchange, Mode, Order, OrderStatus, OrderTransactionType, 55 + OrderValidity, Request, TextMessage, Tick, TickMessage, TickerMessage, OHLC, 56 56 }; 57 57 58 58 pub mod ticker;
+4
src/models/mod.rs
··· 4 4 mod exchange; 5 5 mod mode; 6 6 mod ohlc; 7 + mod order; 7 8 mod request; 8 9 mod text_message; 9 10 mod tick; ··· 13 14 pub use self::exchange::Exchange; 14 15 pub use self::mode::Mode; 15 16 pub use self::ohlc::OHLC; 17 + pub use self::order::{ 18 + Order, OrderStatus, OrderTransactionType, OrderValidity, 19 + }; 16 20 pub use self::request::Request; 17 21 pub use self::text_message::TextMessage; 18 22 pub use self::tick::Tick;
+107
src/models/order.rs
··· 1 + use std::time::Duration; 2 + 3 + use serde::{Deserialize, Serialize}; 4 + use serde_json::Value; 5 + use serde_with::{serde_as, DefaultOnNull}; 6 + 7 + use crate::Exchange; 8 + 9 + #[derive(Debug, Deserialize, Serialize, Clone)] 10 + #[serde(rename_all = "UPPERCASE")] 11 + pub enum OrderTransactionType { 12 + Buy, 13 + Sell, 14 + } 15 + 16 + #[derive(Debug, Deserialize, Serialize, Clone)] 17 + pub enum OrderValidity { 18 + DAY, 19 + IOC, 20 + TTL, 21 + } 22 + 23 + #[derive(Debug, Deserialize, Serialize, Clone)] 24 + #[serde(rename_all = "UPPERCASE")] 25 + pub enum OrderStatus { 26 + COMPLETE, 27 + REJECTED, 28 + CANCELLED, 29 + UPDATE, 30 + } 31 + 32 + #[serde_with::serde_as] 33 + #[derive(Debug, Deserialize, Serialize, Clone)] 34 + pub struct Order { 35 + account_id: String, 36 + 37 + order_id: String, 38 + 39 + #[serde_as(as = "DefaultOnNull")] 40 + exchange_order_id: Option<String>, 41 + 42 + #[serde_as(as = "DefaultOnNull")] 43 + parent_order_id: Option<String>, 44 + 45 + placed_by: String, 46 + app_id: u64, 47 + 48 + status: OrderStatus, 49 + 50 + #[serde_as(as = "DefaultOnNull")] 51 + status_message: Option<String>, 52 + 53 + #[serde_as(as = "DefaultOnNull")] 54 + status_message_raw: Option<String>, 55 + 56 + tradingsymbol: String, 57 + instrument_token: u32, 58 + 59 + #[serde_as(as = "serde_with::FromInto<String>")] 60 + exchange: Exchange, 61 + 62 + order_type: String, 63 + transaction_type: OrderTransactionType, 64 + 65 + validity: OrderValidity, 66 + variety: String, 67 + product: Option<String>, 68 + 69 + #[serde(default)] 70 + average_price: f64, 71 + 72 + #[serde(default)] 73 + disclosed_quantity: f64, 74 + 75 + price: f64, 76 + quantity: u64, 77 + filled_quantity: u64, 78 + 79 + #[serde(default)] 80 + unfilled_quantity: u64, 81 + 82 + #[serde(default)] 83 + pending_quantity: u64, 84 + 85 + #[serde(default)] 86 + cancelled_quantity: u64, 87 + 88 + #[serde(default)] 89 + trigger_price: f64, 90 + 91 + user_id: String, 92 + 93 + #[serde_as(as = "serde_with::DurationSeconds<String>")] 94 + order_timestamp: Duration, 95 + #[serde_as(as = "serde_with::DurationSeconds<String>")] 96 + exchange_timestamp: Duration, 97 + #[serde_as(as = "serde_with::DurationSeconds<String>")] 98 + exchange_update_timestamp: Duration, 99 + 100 + checksum: String, 101 + #[serde(default)] 102 + meta: Option<Value>, 103 + 104 + #[serde_as(as = "DefaultOnNull")] 105 + #[serde(default)] 106 + tag: Option<String> 107 + }