5个版本 (3个破坏性版本)
0.4.0 | 2024年2月11日 |
---|---|
0.3.0 | 2023年12月6日 |
0.2.0 | 2023年12月2日 |
0.1.1 | 2023年11月24日 |
0.1.0 | 2023年11月24日 |
#13 in #api-testing
每月 69 次下载
90KB
1K SLoC
tetrio-api
一个用于与TETR.IO 公共API交互的库,具有一个简单的http客户端,不管理缓存,以及一个"cached-http-client",它将API获取的数据存储在内存中。已经存在一个用于在Rust中与API交互的库这里,但我仍然需要一个更简单的方式来与缓存交互,所以我最终不得不开发这个库。
该库试图与API规范保持一致,但我不得不做一些妥协,因为
- 我需要访问未记录的回放数据
- 有时文档部分不准确,这会导致尝试使用库时出错。
这个库可能并不完美,但我确实编写了测试,由于Rust模型是严格的,模型必须符合API的当前状态才能通过测试,使其基本准确和可用。
这不是TETR.IO官方关联的库。
快速入门
安装
您可以通过cargo添加此包
cargo add tetrio-api
或者将其添加到您的Cargo.toml中
[dependencies]
tetrio-api = { "git" = "https://github.com/Takathediscordbot/tetrio-api" }
这将自动将此API的最新版本添加到您的依赖项中。
您还可以使用特定的提交,如下所示
[dependencies]
tetrio-api = { "git" = "https://github.com/Takathediscordbot/tetrio-api", rev="64a0516" }
使用方法
获取用户
use std::f64::NAN;
use tetrio_api::{http::client, models::packet::Packet};
#[tokio::main]
async fn main() {
let user = client::fetch_user_info("takathedinosaur").await.expect("Couldn't fetch the CH.TETR.IO API to find the error! This could have been an error while parsing the data or while trying to send the HTTP request.");
match user {
Packet { data: Some(data), .. } => {
println!("{} (id: {}): {}pps, {}apm {}vs", data.user.username, data.user.id, data.user.league.pps.unwrap_or(NAN), data.user.league.apm.unwrap_or(NAN), data.user.league.vs.unwrap_or(NAN));
},
Packet { success, error, .. } => {
if success {
eprintln!("The API didn't return an error but no data was found somehow!");
// According to the API documentation that is not a possible case.
unreachable!();
}
eprintln!("An error has occured while trying to fetch the user! {:?}", error)
}
};
}
示例
在git仓库的示例文件夹中有代码示例。那里的readme将指示如何运行示例。
获取用户
运行测试
在使用库之前确保其功能正常,您可以运行以下命令来运行测试
cargo test
但是,运行测试可能会失败,因为速率限制,您可以使用以下命令限制同时运行的线程数
cargo test -- --test-threads=2
测试将运行得明显更慢,但不应因速率限制而失败。您也可以尝试使用更高的数字,如果测试仍然因为速率限制而无法工作,可以将线程限制为1以完全消除并行性。
依赖项
~7-20MB
~302K SLoC