kiteticker_async/
lib.rs

1#![allow(
2  clippy::cognitive_complexity,
3  clippy::large_enum_variant,
4  clippy::needless_doctest_main
5)]
6#![warn(missing_debug_implementations, rust_2018_idioms, unreachable_pub)]
7#![doc(test(
8  no_crate_inject,
9  attr(deny(warnings, rust_2018_idioms), allow(dead_code, unused_variables))
10))]
11
12//! Async implementation of Kite Connect's WebSocket Steaming API
13//!
14//! This crate provides types to subscribe and receive live quotes for instruments during market hours via WebSockets.
15//! The response is parsed and converted into Rust types.
16//! The WebSocket connection is managed by the library and reconnected automatically.
17//!
18//! # Usage
19//! ```
20//!
21//! use kiteticker_async::{KiteTickerAsync, Mode, TickerMessage};
22//!
23//! #[tokio::main]
24//! pub async fn main() -> Result<(), String> {
25//!   let api_key = std::env::var("KITE_API_KEY").unwrap_or_default();
26//!   let access_token = std::env::var("KITE_ACCESS_TOKEN").unwrap_or_default();
27//!   let ticker = KiteTickerAsync::connect(&api_key, &access_token).await?;
28//!
29//!   let token = 408065;
30//!   // subscribe to an instrument
31//!   let mut subscriber = ticker
32//!     .subscribe(&[token], Some(Mode::Full))
33//!     .await?;
34//!
35//!   // await quotes
36//!  loop {
37//!   if let Some(msg) = subscriber.next_message().await? {
38//!     match msg {
39//!       TickerMessage::Ticks(ticks) => {
40//!         let tick = ticks.first().unwrap();
41//!         println!("Received tick for instrument_token {}, {:?}", tick.instrument_token, tick);
42//!         break;
43//!       },
44//!      _ => continue,
45//!     }
46//!   }
47//!  }
48//!
49//!   Ok(())
50//! }
51//! ```
52mod models;
53pub use models::{
54  Depth, DepthItem, Exchange, Mode, Request, TextMessage, Tick, TickMessage,
55  TickerMessage, OHLC,
56};
57
58pub mod ticker;
59pub use ticker::{KiteTickerAsync, KiteTickerSubscriber};