5 个不稳定版本
0.2.0 | 2021年1月10日 |
---|---|
0.1.2 | 2020年11月30日 |
0.1.1 | 2020年11月26日 |
0.0.2 | 2020年11月25日 |
0.0.1 | 2020年11月21日 |
在 #api 中排名 1519
2MB
4K SLoC
beatsaver-rs
这是一个用于与 beatsaver.com API 交互的 Rust 库项目。
安装
将以下内容添加到依赖项
beatsaver-rs = "0.2.0"
使用方法
基本用法
use beatsaver_rs::BeatSaverApi;
use beatsaver_rs::client::BeatSaver;
use beatsaver_rs::map::Map;
use bytes::Bytes;
use std::convert::TryInto;
#[tokio::main]
async fn main() {
// Create a new client
let client = BeatSaver::new();
// Get map with key `1`
let map: Map = client.map(&"1".try_into().unwrap()).await.unwrap();
println!("Map by key: {}", map.name);
// Get map with hash fda568fc27c20d21f8dc6f3709b49b5cc96723be
let map: Map = client.map(&"fda568fc27c20d21f8dc6f3709b49b5cc96723be".try_into().unwrap()).await.unwrap();
println!("Map by hash: {}", map.name);
// Download map
let map_download: Bytes = client.download((&map).into()).await.unwrap();
let map_download: Bytes = client.download(&"1".try_into().unwrap()).await.unwrap();
// save map somewhere
}
迭代器
use beatsaver_rs::BeatSaverApi;
use beatsaver_rs::client::BeatSaver;
use beatsaver_rs::map::Map;
#[tokio::main]
async fn main() {
// Create a new client
let client = BeatSaver::new();
// Get the latest maps
let mut maps = client.maps_latest();
// Iterate while there are more maps
while let Some(map) = maps.next().await {
match map {
// We retrieved the map
Ok(m) => println!(" => {}", m.name),
// We were rate limited, wait the specified time
Err(BeatSaverApiError::RateLimitError(r)) => {
println!("Rate Limit: {:?}", r.reset_after);
sleep(r.reset_after).await;
}
// Some other error, continue to try again, break to stop
Err(e) => {
println!("Error: {:?}", e),
break;
}
}
}
}
后端
目前,此包支持三个后端
默认情况下,使用 reqwest
,但您可以通过启用 [backend]_backend
功能(例如,surf_backend
)来指定特定的后端。
测试
在测试时,确保启用所有功能以确保所有后端都得到适当的测试
cargo test --all-features
许可证
依赖项
~3–17MB
~268K SLoC