beatsaver-rs
This project is a Rust library for interacting with the beatsaver.com api.
Installation
Add the following to your dependencies:
beatsaver-rs = "0.2.0"
Usage
Basic usage:
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() {
let client = BeatSaver::new();
let map: Map = client.map(&"1".try_into().unwrap()).await.unwrap();
println!("Map by key: {}", map.name);
let map: Map = client.map(&"fda568fc27c20d21f8dc6f3709b49b5cc96723be".try_into().unwrap()).await.unwrap();
println!("Map by hash: {}", map.name);
let map_download: Bytes = client.download((&map).into()).await.unwrap();
let map_download: Bytes = client.download(&"1".try_into().unwrap()).await.unwrap();
}
Iterators:
use beatsaver_rs::BeatSaverApi;
use beatsaver_rs::client::BeatSaver;
use beatsaver_rs::map::Map;
#[tokio::main]
async fn main() {
let client = BeatSaver::new();
let mut maps = client.maps_latest();
while let Some(map) = maps.next().await {
match map {
Ok(m) => println!(" => {}", m.name),
Err(BeatSaverApiError::RateLimitError(r)) => {
println!("Rate Limit: {:?}", r.reset_after);
sleep(r.reset_after).await;
}
Err(e) => {
println!("Error: {:?}", e),
break;
}
}
}
}
Backends
Currently, this crate supports three backends:
By default, reqwest
is used, but you can specify a particular backend by enabling the [backend]_backend
feature (for example, surf_backend
).
Testing
When testing, make sure to enable all features to ensure all backends are tested properly:
cargo test --all-features
License
MIT