bw_web_api_rs/endpoints/
leaderboard_rank_by_toon.rs

1use 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    /// Get leaderboard rank for a specific player
38    ///
39    /// Endpoint: /web-api/v1/leaderboard-rank-by-toon/{leaderboard_id}/{toon}/{gateway}
40    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}