#stars #brawl #brawlstars #star #api #api-key

brawl-api

Brawl Stars API 的 Rust 实现(https://developer.brawlstars.com/)

3 个版本

0.1.2 2020 年 2 月 5 日
0.1.1 2020 年 2 月 5 日
0.1.0 2020 年 2 月 5 日

#6#stars

MIT 许可证

220KB
3K SLoC

rust-brawl-api

Brawl Stars API 的 Rust 实现(https://developer.brawlstars.com/)。

使用方法

  1. 使用 cargo (在您的 Cargo.toml 中添加为依赖项)。
  2. 在 Brawl Stars 开发者网站上生成 API 密钥。
  3. 代码!

例如

use brawl_api::prelude::*;

fn main() -> Result<(), Box<dyn ::std::error::Error>> {
    let client = Client::new("MYAUTHTOKEN");
    let player = Player::fetch(&client, "#PLAYER_TAG_TO_FETCH")?;
    // now data for player with the given tag is available.
    // See all models in the documentation.
}

许可证

许可协议为 MIT 许可证(参见 LICENSE 文件)。

贡献

除非您明确声明,否则您有意提交以供包含在作品中的任何贡献均应许可为 MIT,不附加任何额外条款或条件。


lib.rs:

brawl-api 包通过使用 官方 Brawl Stars API 创建模型和获取方法。它旨在成为一个可用、可预测且适合程序员的库。任何地方如果不符合这一要求,都非常欢迎贡献。

请求

所有请求工作都由 reqwest 完成。该库支持同步(阻塞)和,通过 async 功能(默认启用),异步函数风格 - 所有具有这种双重性的获取方法都有一个同步版本(具有其正常名称)和一个异步版本(通过在同步名称前加 a_ 命名 - 例如: fetch(同步)和 a_fetch(异步))。

反序列化和数据结构

JSON 的反序列化是通过 serdeserde-json 库完成的,这两个库在这一点上非常有价值。这意味着 所有库模型 都实现了 SerializeDeserialize serde 特性,并针对 API 的官方文档中记录的 JSON 格式进行了优化。

此外,值得注意的是,大多数API模型都实现了Default特质。这是用于与serde一起使用,以确保无论API失败与否,值都会存在。大多数情况下,未标记为Option<T>的字段应该存在 - 注意到官方《斗舞星》API文档中提到所有字段都是可选的(这并不有帮助),尽管大多数情况下它们都会出现,除非服务器故障或添加了某些意外的新用例(在这种情况下,可以责备库没有更新 - 欢迎贡献PR,或者只需提出一个关于此问题的issue,将其添加到库中!)。

有关模型更多信息,请参阅model模块。

推荐用法

建议使用库的prelude模块导入库

use brawl_api::prelude::*;

这会将库的所有特质、模型和辅助Brawlers枚举引入作用域。

如果不想将所有模型引入作用域,那么至少应该导入所有特质,以便模型能够正常工作

use brawl_api::traits::*;

功能标志

该包提供了一些功能标志(默认全部启用)

  • async标志
    • 启用使用异步(非阻塞)获取函数 - a_fetcha_fetch_froma_fetch_intoa_refetch - 在适用的情况下。
    • async_trait添加为依赖项。
  • auto-hashtag标志:启用在需要标签的任何地方智能插入标签。
    • 这意味着,例如,在对Player::fetch的调用中,需要获取玩家的标签,可以传递一个以hashtag开头的字符串(在这种情况下,库直接使用它)或者不使用(然后,启用此功能,库会自动添加它)。
    • 禁用此功能需要在每个标签字符串的开始处传递hashtag。这是由于API解析标签的方式,对此几乎无能为力。
  • chrono:将chrono添加为依赖项并启用使用TimeLike.parse,该功能将传入的时间戳解析为chrono::DateTime<chrono::Utc>
  • players标志:启用使用model::players模块(用于/players端点)。
  • clubs标志:启用使用model::clubs模块(用于/clubs端点)。
  • rankings标志:启用使用model::rankings模块(用于/rankings端点)。
  • brawlers 标志:启用使用 model::brawlers 模块(用于 /brawlers 端点)。

依赖关系

~4–8.5MB
~188K SLoC