6 个版本

0.1.5 2024 年 4 月 28 日
0.1.4 2024 年 4 月 19 日
0.1.3 2024 年 2 月 3 日
0.1.2 2024 年 1 月 2 日

#702解析器实现

每月 30 次下载

MIT 许可证

160KB
4K SLoC

SFox.com API 的 Web 客户端

CI

描述

sfox 为 SFox.com API 的 HTTP 调用提供了类型化的异步封装,同时也为 WebSocket 消息反序列化提供了 Serde 类型。

未实现 FIX。

安装

完成本节中的步骤,使 sfox 客户端在您的 Rust 应用程序中可用。

环境

在您的环境中设置 SFOX_AUTH_TOKEN(在 SFox 网络控制台创建)

SFOX_AUTH_TOKEN=<AUTH-TOKEN>

注意:服务器 URL SFOX_HTTP_SERVER_URLSFOX_WS_SERVER_URL 也可覆盖以进行测试和开发。

依赖

在您的项目的 Cargo.toml[dependencies] 下添加以下行

sfox = "0.1.5"

用法

sfox::http 模块对 SFox API 执行异步调用,并返回类型化响应。

HTTP

use sfox::http::{self, v1::order_book::OrderBook};
let sfox = http::new().unwrap();
let order_book: OrderBook = sfox.order_book("btcusd").await.unwrap();
println!("Order book currency: {:?}", order_book.bids[0]);

终端应打印出如下响应

Order book currency: OpenOrder { price: 35000.012, volume: 1.0, exchange: "some-exchange" }

WebSocket

WebSocket 客户端的用法包括实例化客户端、与服务器进行身份验证以及订阅/取消订阅数据流。

use sfox::websocket::Client;
let sfox_ws = Client::new().await?;
let (mut write, mut read) = sfox_ws.stream.split();

// Start a task to read messages from the SFox stream
let _sfox_handle = tokio::spawn(async move { handle_incoming_message(&mut read).await });

// Subscribe to a feed on the websocket server
let _ticker_subscription = Client::subscribe(&mut write, Feed::Ticker, vec!["btcusd".to_string()]).await;

// Authenticate to access private feeds
let _authentication_attempt = Client::authenticate(&mut write).await;

// Subscribe to a private feed
let _balance_subscription = Client::subscribe(&mut write, Feed::Balances, vec![]).await;

其中 handle_incoming_message 可以这样实现

async fn handle_incoming_message(read: &mut SplitStream<WssStream> ) {
    while let Some(message) = read.next().await {
        println!("Received message: {:?}", message);
    }
}

最小支持的 Rust 版本 (MSRV)

当前的 MSRV 是 1.69。这个版本可能在未来的小版本中更改,所以如果需要特定的 Rust 版本,请使用受限版本要求。

贡献

贡献使开源社区成为一个如此美妙的学习、灵感和创造的地方。您所做的任何贡献都将受到极大的赞赏。

如果您有改进此项目的建议,请 fork 仓库并创建一个 pull request。您也可以简单地通过带有“enhancement”标签的问题来提出。别忘了给项目加星!谢谢!

  1. fork 项目
  2. 创建您的功能分支 git checkout -b feature/AmazingFeature
  3. 提交您的更改 git commit -m '添加一些惊人的功能'
  4. 推送到分支 git push origin feature/AmazingFeature
  5. 打开拉取请求

许可证

根据MIT许可证分发。有关更多信息,请参阅LICENSE.txt

依赖关系

~8-22MB
~359K SLoC