summaryrefslogtreecommitdiffstats
path: root/src/main.rs
blob: e700ed6ddd7b9482016484d3723c1057ec02a2d6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
use redis::IntoConnectionInfo;

mod airdata;
mod auth;
mod error;
use tdlib_autogen::ClientExt;
//mod handlers;
//mod lossy;
mod router;
use router::UpdateHandler;

fn main() {
    let runtime = tokio::runtime::Builder::new_multi_thread()
        .worker_threads(5)
        .enable_io()
        .build()
        .unwrap();

    runtime.block_on(async_main()).expect("Main errored");
}

async fn async_main() -> error::AirceptionResult<()> {
    dotenv::dotenv().ok();
    env_logger::init();


    let data = airdata::AsyncData::new("redis://127.0.0.1/".into_connection_info()?).await?;
    #[allow(unused)]
    let tg = tdlib_rs::ClientBuilder::new(UpdateHandler(data))
        .log_level(tdlib_rs::LogLevel::Warn)
        //.log_file("tg.log")
        .build();

    std::thread::sleep(std::time::Duration::from_secs(1));
    log::warn!("{:#?}", tg.get_me().await);
    log::warn!("{:#?}", tg.get_network_statistics(true).await);

    loop {
        let auth_state = tg.get_authorization_state().await;
        match auth_state {
            Ok(tdlib_autogen::AuthorizationState::AuthorizationStateReady) => break,
            _ => {}
        };
        log::info!("{:#?}", auth_state);
        std::thread::sleep(std::time::Duration::from_secs(5));
    }
    /* sleep forever */
    std::thread::park();
    Ok(())
}