3 个版本
0.1.2 | 2020 年 2 月 5 日 |
---|---|
0.1.1 | 2020 年 2 月 5 日 |
0.1.0 | 2020 年 2 月 5 日 |
#6 在 #stars
220KB
3K SLoC
rust-brawl-api
Brawl Stars API 的 Rust 实现(https://developer.brawlstars.com/)。
使用方法
- 使用
cargo
(在您的Cargo.toml
中添加为依赖项)。 - 在 Brawl Stars 开发者网站上生成 API 密钥。
- 代码!
例如
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 的反序列化是通过 serde
和 serde-json
库完成的,这两个库在这一点上非常有价值。这意味着 所有库模型 都实现了 Serialize
和 Deserialize
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_fetch
、a_fetch_from
、a_fetch_into
、a_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