bw_web_api_rs/endpoints/
leaderboard_rank_by_toon.rs1use crate::endpoints::Endpoint;
2use crate::error::ApiError;
3use crate::models::LeaderboardRankResponse;
4use crate::types::{Gateway, Leaderboard};
5
6pub struct LeaderboardRankEndpoint {
7 leaderboard_id: Leaderboard,
8 toon: String,
9 gateway: Gateway,
10}
11
12impl LeaderboardRankEndpoint {
13 pub fn new(leaderboard_id: Leaderboard, toon: String, gateway: Gateway) -> Self {
14 Self {
15 leaderboard_id,
16 toon,
17 gateway,
18 }
19 }
20}
21
22impl Endpoint for LeaderboardRankEndpoint {
23 type Request = ();
24 type Response = LeaderboardRankResponse;
25
26 fn endpoint(&self) -> String {
27 format!(
28 "/web-api/v1/leaderboard-rank-by-toon/{}/{}/{}",
29 self.leaderboard_id as i32,
30 urlencoding::encode(&self.toon),
31 self.gateway as i32
32 )
33 }
34}
35
36impl crate::client::ApiClient {
37 pub async fn get_leaderboard_rank(
41 &self,
42 leaderboard_id: Leaderboard,
43 toon: String,
44 gateway: Gateway,
45 ) -> Result<LeaderboardRankResponse, ApiError> {
46 let endpoint = LeaderboardRankEndpoint::new(leaderboard_id, toon, gateway);
47 self.request(&endpoint, &()).await
48 }
49}