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};