tradingview-rs 0.0.4

Tradingview datafeed api `tradingview-rs` project.
Documentation
use anyhow::Ok;
use dotenv::dotenv;
use std::env;
use tradingview::{
    Interval,
    callback::EventCallback,
    chart::ChartOptions,
    get_builtin_indicators,
    pine_indicator::{BuiltinIndicators, ScriptType},
    socket::DataServer,
    websocket::{WebSocket, WebSocketClient},
};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    dotenv().ok();
    tracing_subscriber::fmt::init();
    let auth_token = env::var("TV_AUTH_TOKEN").expect("TV_AUTH_TOKEN is not set");

    let buildins = get_builtin_indicators(BuiltinIndicators::Fundamental).await?;
    println!("{:#?}", buildins[0]);
    let study_callback = |data| {
        println!("{:#?}", data);
    };
    let callbacks: EventCallback = EventCallback::default().on_study_data(study_callback);

    let client = WebSocketClient::default().set_callbacks(callbacks);

    let websocket = WebSocket::new()
        .server(DataServer::ProData)
        .auth_token(&auth_token)
        .client(client)
        .build()
        .await?;

    let opts = ChartOptions::new_with("ACV", "UPCOM", Interval::OneDay)
        .bar_count(1)
        .study_config(
            &buildins[0].script_id,
            &buildins[0].script_version,
            ScriptType::IntervalScript,
        );

    websocket.set_market(opts).await?;

    websocket.subscribe().await;

    Ok(())
}