This crate aims to provide a Rust interface with the League of Legends Game Client API. The official doc can be found here.
The Game Client API is an API that is exposed by your local League of Legends Client, and should not be mistaken for the LoL API, for which there is already a great crate. The API allows you to get some informations about the ongoing game.
There are currently three modules:
api
which contains theGameClient
and all it's methods that calls the API.model
which contains all the structures for the data that will be returned by the API.event_listener
which contains the definition of a trait to create structures that you can pass tostart_listener
to run a task that will periodically check for newEvents
and trigger callbacks accordingly. (you can see an example inexamples/basic_listener
)
use lol_game_client_api::api::{GameClient, get_riot_root_certificate};
use tokio;
#[tokio::main]
async fn main() {
let client = GameClient::new();
let active_player = client.active_player().await.unwrap();
println!("Stats Runes: {:?}", active_player.full_runes.stat_runes)
}
A more complete example can be found in the repo LoLCongratz. This is a small binary that plays a sound in a virtual audio cable each time a teammate makes a kill.
Currently, some variants are missing from enums (see model::DragonType
for example).
Also, some endpoints are not working at all (
all the endpoints that require the summonerName
as a GET
param for example).
But all the structs to deserialize the response already exists, so this should not be too much work.
I created this crate a morning, for a personnal project, so there may be some missing features, or it may not be up-to-date with the latest LoL client. In which case, I'd be delighted to see a contribution (being an issue or a PR) !