5个不稳定版本

新增 0.3.0 2024年8月25日
0.2.0 2023年12月16日
0.1.2 2023年12月15日
0.1.1 2023年12月14日
0.1.0 2023年12月14日

#7 in #ton

MIT 许可证

175KB
4.5K SLoC

tonapi-rs

Latest version

这是一个SDK,它为与TonAPI交互提供全面支持。

功能

  • 授权支持:您可以从tonconsole.com获取令牌。
  • REST API集成:与TonAPI RESTful端点交互。
  • 流式API(SSE、WebSocket):利用服务器发送事件(SSE)和WebSocket协议进行实时数据流。
  • tonlib-rs类型兼容:TonAddress

使用方法

REST

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = RestApiClientV2::new(Network::Mainnet, None);

    let result = client.get_account(ACCOUNT_ID).await.unwrap();
    println!("Account balance: {}", result.balance);

    Ok(())
}

SSE

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let sse_api = SseApi::new(tonapi::Network::Mainnet, None);

    let mut stream = sse_api.transactions_stream(
        Some(vec![
            "-1:5555555555555555555555555555555555555555555555555555555555555555".to_string(),
        ]),
        None,
    );

    while let Ok(evt) = stream.next().await {
        if let Some(evt) = evt {
            println!("Event: {}", evt.tx_hash);
        } else {
            // Stream ended
            break;
        }
    }

    Ok(())
}

WebSocket

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let ws_api = WsApi::new(Network::Mainnet, None);

    let mut stream = ws.transactions_stream(Some(vec![AccountOperations {
        account: "-1:5555555555555555555555555555555555555555555555555555555555555555".to_string(),
        operations: None
    }]));

    while let Ok(evt) = stream.next().await {
        if let Some(evt) = evt {
            println!("Event: {}", evt.params.tx_hash);
        } else {
            // Stream ended
            break;
        }
    }

    Ok(())
}

贡献

欢迎对库的贡献!如果您想做出贡献,请随时在GitHub上发起拉取请求。您的贡献将非常受赞赏,并有助于提升整个TON社区SDK的质量。

依赖项

~7–22MB
~350K SLoC