8 releases

0.2.9 Oct 13, 2020
0.2.8 Oct 12, 2020
0.2.7 Sep 28, 2020
0.2.6 Jun 22, 2020
0.1.0 Jan 12, 2018

#4 in #ticker

MIT license

620KB
2K SLoC

JavaScript 1K SLoC // 0.1% comments Rust 1K SLoC // 0.0% comments

kiteconnect-rs

Crates.io Travis

API wrapper for kiteconnect in rust

Docs

https://docs.rs/kiteconnect

Usage

Head on to https://crates.io/crates/kiteconnect

Copy kiteconnect = "<VERSION>" dependency to Cargo.toml file

KiteConnect REST APIs

extern crate kiteconnect;
extern crate serde_json as json;

use kiteconnect::connect::KiteConnect;

fn main() {
    let mut kiteconnect = KiteConnect::new("<API-KEY>", "");

    // Open browser with this URL and get the request token from the callback
    let loginurl = kiteconnect.login_url();
    println!("{:?}", loginurl);

    // Generate access token with the above request token
    let resp = kiteconnect.generate_session("<REQUEST-TOKEN>", "<API-SECRET>");
    // `generate_session` internally sets the access token from the response
    println!("{:?}", resp);

    let holdings: json::Value = kiteconnect.holdings().unwrap();
    println!("{:?}", holdings);
}

Kite Ticker Websocket

extern crate kiteconnect;
extern crate serde_json as json;

use kiteconnect::ticker::{KiteTicker, KiteTickerHandler, WebSocketHandler}

#[derive(Debug)]
struct CustomHandler {
    count: u32
}

impl KiteTickerHandler for CustomHandler {
    fn on_open<T>(&mut self, ws: &mut WebSocketHandler<T>)
    where T: KiteTickerHandler {
        // Subscribe to a list of tokens on opening the websocket connection
        ws.subscribe(vec![123456]);
        println!("Fellow on_open callback");
    }
    fn on_ticks<T>(&mut self, ws: &mut WebSocketHandler<T>, tick: Vec<json::Value>)
    where T: KiteTickerHandler {
        println!("{:?}", tick);
        println!("Fellow on_ticks callback");
    }

    fn on_close<T>(&mut self, ws: &mut WebSocketHandler<T>)
    where T: KiteTickerHandler {
        println!("Fellow on_close callback");
    }

    fn on_error<T>(&mut self, ws: &mut WebSocketHandler<T>)
    where T: KiteTickerHandler {
        println!("Fellow on_error callback");
    }
}

fn main() {
    let mut ticker = KiteTicker::new("<API-KEY>", "<ACCESS-TOKEN>");

    let custom_handler = CustomHandler {
        count: 0
    };

    ticker.connect(custom_handler, None);

    loop {}
}

Running Examples

KiteConnect REST API sample

cargo run --example connect_sample

KiteConnect Websocket sample

cargo run --example ticker_sample

TODO

  • Add serializer structs for all kiteconnect returning datastructures
  • Reconnection mechanism

Dependencies

~26MB
~525K SLoC