ergonomic_api/
ergonomic_api.rs

1use faceit::HttpClient;
2
3#[tokio::main]
4async fn main() -> Result<(), faceit::error::Error> {
5    let client = HttpClient::new();
6
7    // Example 1: Player API
8    println!("=== Player API ===");
9    let player = faceit::http::ergonomic::Player::new("player-id-here", &client);
10
11    // Get player details
12    match player.get().await {
13        Ok(player_data) => {
14            println!("Player: {}", player_data.nickname);
15            if let Some(country) = player_data.country {
16                println!("Country: {}", country);
17            }
18        }
19        Err(e) => eprintln!("Error: {}", e),
20    }
21
22    // Get player stats
23    match player.stats("cs2").await {
24        Ok(stats) => {
25            println!("Stats retrieved for game: {}", stats.game_id);
26        }
27        Err(e) => eprintln!("Error: {}", e),
28    }
29
30    // Get player match history
31    match player.history("cs2", None, None, Some(0), Some(20)).await {
32        Ok(history) => {
33            println!("Found {} matches", history.items.len());
34        }
35        Err(e) => eprintln!("Error: {}", e),
36    }
37
38    // Get player hubs
39    match player.hubs(Some(0), Some(50)).await {
40        Ok(hubs) => {
41            println!("Found {} hubs", hubs.items.len());
42        }
43        Err(e) => eprintln!("Error: {}", e),
44    }
45
46    // Example 2: Match API
47    println!("\n=== Match API ===");
48    let match_obj = faceit::http::ergonomic::Match::new("match-id-here", &client);
49
50    match match_obj.get().await {
51        Ok(match_data) => {
52            println!("Match ID: {}", match_data.match_id);
53            println!("Status: {}", match_data.status);
54        }
55        Err(e) => eprintln!("Error: {}", e),
56    }
57
58    match match_obj.stats().await {
59        Ok(stats) => {
60            println!("Rounds: {}", stats.rounds.len());
61        }
62        Err(e) => eprintln!("Error: {}", e),
63    }
64
65    // Example 3: Game API
66    println!("\n=== Game API ===");
67    let game = faceit::http::ergonomic::Game::new("cs2", &client);
68
69    match game.get().await {
70        Ok(game_data) => {
71            println!("Game: {}", game_data.long_label);
72        }
73        Err(e) => eprintln!("Error: {}", e),
74    }
75
76    match game.matchmakings(Some("EU"), Some(0), Some(20)).await {
77        Ok(matchmakings) => {
78            println!("Found {} matchmakings", matchmakings.items.len());
79        }
80        Err(e) => eprintln!("Error: {}", e),
81    }
82
83    // Example 4: Hub API
84    println!("\n=== Hub API ===");
85    let hub = faceit::http::ergonomic::Hub::new("hub-id-here", &client);
86
87    match hub.get(None).await {
88        Ok(hub_data) => {
89            println!("Hub: {}", hub_data.name);
90        }
91        Err(e) => eprintln!("Error: {}", e),
92    }
93
94    match hub.matches(Some("all"), Some(0), Some(20)).await {
95        Ok(matches) => {
96            println!("Found {} matches", matches.items.len());
97        }
98        Err(e) => eprintln!("Error: {}", e),
99    }
100
101    match hub.members(Some(0), Some(50)).await {
102        Ok(members) => {
103            println!("Found {} members", members.items.len());
104        }
105        Err(e) => eprintln!("Error: {}", e),
106    }
107
108    // Example 5: Championship API
109    println!("\n=== Championship API ===");
110    let championship = faceit::http::ergonomic::Championship::new("championship-id-here", &client);
111
112    match championship.get(None).await {
113        Ok(championship_data) => {
114            println!("Championship: {}", championship_data.name);
115        }
116        Err(e) => eprintln!("Error: {}", e),
117    }
118
119    match championship.matches(Some("all"), Some(0), Some(20)).await {
120        Ok(matches) => {
121            println!("Found {} matches", matches.items.len());
122        }
123        Err(e) => eprintln!("Error: {}", e),
124    }
125
126    // Example 6: Direct instantiation (alternative to client methods)
127    println!("\n=== Direct Instantiation ===");
128    use faceit::http::ergonomic::{Championship, Game, Hub, Match, Player};
129
130    let _player2 = Player::new("player-id-here", &client);
131    let _match_obj2 = Match::new("match-id-here", &client);
132    let _game2 = Game::new("cs2", &client);
133    let _hub2 = Hub::new("hub-id-here", &client);
134    let _championship2 = Championship::new("championship-id-here", &client);
135
136    println!("Created ergonomic API instances directly");
137
138    Ok(())
139}