#steam #web-api #api-wrapper #api #api-client #blocking-client #valve

tappet

Valve 官方 Steam API 的强类型包装器

3 个版本 (破坏性)

0.6.0 2024年2月7日
0.5.0 2022年6月10日
0.4.0 2021年11月12日

#5#valve


用于 steam-trading

MIT 许可证

15MB
3.5K SLoC

Tappet

Crate version on crates.io Crate documentation on docs.rs Crate license

Steam Web APIXPAW Steam API 的纯 Rust 绑定,其中后者包含一些 Steam Web API 的未记录但有用的端点。

此库受到 Rust Github API Wrapper 的极大启发。

内部,Steam-Web-API 为了简单起见使用了 reqwest 客户端,但未来可能会改变。

端点缺少 IDE 自动完成

由于此库大量使用过程宏来生成强类型绑定,如果您的 IDE 不支持过程宏完成,您可能无法获得端点的自动完成。

缺少功能

  • 合作伙伴 API 不可用;
  • 不流行的接口不可用;
  • 所有端点的响应;

入门指南

将以下内容添加到您的 Cargo.toml

[dependencies]
tappet = "^0.4"

或者如果您需要阻塞客户端

tappet = { version = "^0.4", default-features = false, features = ["blocking"] }

然后在您的 lib.rsmain.rs 文件中添加

use tappet::{Executor, SteamAPI};

示例用法

use tappet::{Executor, SteamAPI};

// if using blocking client
// use tappet::blocking::{Executor, SteamAPI};


#[tokio::main]
async fn main() -> Result<()> {
   let client = SteamAPI::new(std::env!("STEAM_API"));

   // You choose between the already structured response
   let response: tappet::response_types::GetPlayerBansBase = client
       .get()
       .ISteamUser()
       .GetPlayerBans(vec!["76561197984835396".to_string()])
       .execute_with_response()
       .await?;

   // or the raw response from reqwest
   let response: reqwest::Response = client
        .get()
       .ISteamUser()
       .GetPlayerSummaries(vec!["76561197984835396".to_string()])
       .execute()
       .await?;
}

与不同的机器人重用


// the bot you want to recover pending trade offers
let bot_api_key: &str = "..."

let response: GetTradeOffersResponse = api_client
    .get()
    .IEconService()
    .GetTradeOffers(true, false, u32::MAX, None, None, None, None)
    .inject_custom_key(bot_api_key)
    .execute_with_response()
    .await?;

并非所有端点都有结构化端点响应。您可以做出贡献!

依赖项

~34–46MB
~790K SLoC