use faceit::HttpClient;
#[tokio::main]
async fn main() -> Result<(), faceit::error::Error> {
let client = HttpClient::new();
println!("Fetching player by ID...");
match client.get_player("player-id-here").await {
Ok(player) => {
println!("Player: {}", player.nickname);
if let Some(country) = player.country {
println!("Country: {}", country);
}
}
Err(e) => eprintln!("Error fetching player: {}", e),
}
println!("\nFetching player from lookup...");
match client
.get_player_from_lookup(Some("player_nickname"), Some("cs2"), None)
.await
{
Ok(player) => {
println!("Player: {}", player.nickname);
}
Err(e) => eprintln!("Error fetching player: {}", e),
}
println!("\nFetching player stats...");
match client.get_player_stats("player-id-here", "cs2").await {
Ok(stats) => {
println!("Player ID: {}", stats.player_id);
println!("Game ID: {}", stats.game_id);
}
Err(e) => eprintln!("Error fetching stats: {}", e),
}
println!("\nFetching player match history...");
match client
.get_player_history("player-id-here", "cs2", None, None, Some(0), Some(20))
.await
{
Ok(history) => {
println!("Found {} matches", history.items.len());
if let Some(first_match) = history.items.first() {
println!("Most recent match: {}", first_match.match_id);
}
}
Err(e) => eprintln!("Error fetching history: {}", e),
}
println!("\nFetching match details...");
match client.get_match("match-id-here").await {
Ok(match_details) => {
println!("Match ID: {}", match_details.match_id);
println!("Game: {}", match_details.game);
println!("Status: {}", match_details.status);
}
Err(e) => eprintln!("Error fetching match: {}", e),
}
println!("\nFetching match stats...");
match client.get_match_stats("match-id-here").await {
Ok(stats) => {
println!("Rounds: {}", stats.rounds.len());
}
Err(e) => eprintln!("Error fetching match stats: {}", e),
}
println!("\nSearching for players...");
match client
.search_players("player_name", Some("cs2"), None, Some(0), Some(20))
.await
{
Ok(results) => {
println!("Found {} players", results.items.len());
for player in results.items.iter().take(5) {
println!(" - {} ({})", player.nickname, player.player_id);
}
}
Err(e) => eprintln!("Error searching players: {}", e),
}
println!("\nFetching all games...");
match client.get_all_games(Some(0), Some(20)).await {
Ok(games) => {
println!("Found {} games", games.items.len());
for game in games.items.iter().take(5) {
println!(" - {} ({})", game.long_label, game.game_id);
}
}
Err(e) => eprintln!("Error fetching games: {}", e),
}
println!("\nFetching hub details...");
match client.get_hub("hub-id-here", None).await {
Ok(hub) => {
println!("Hub: {}", hub.name);
println!("Game: {}", hub.game_id);
}
Err(e) => eprintln!("Error fetching hub: {}", e),
}
println!("\nFetching global ranking...");
match client
.get_global_ranking("cs2", "EU", None, Some(0), Some(20))
.await
{
Ok(ranking) => {
println!("Found {} players in ranking", ranking.items.len());
for entry in ranking.items.iter().take(5) {
println!(
" {}: {} - ELO: {}",
entry.position, entry.nickname, entry.faceit_elo
);
}
}
Err(e) => eprintln!("Error fetching ranking: {}", e),
}
println!("\nCreating client with builder...");
let _custom_client = HttpClient::builder()
.api_key("your-api-key-or-access-token-here")
.timeout(std::time::Duration::from_secs(60))
.build()?;
println!("Client created with custom configuration");
Ok(())
}