bw_web_api_rs/endpoints/
leaderboard_name_search.rs

1use crate::endpoints::Endpoint;
2use crate::error::ApiError;
3use crate::models::LeaderboardNameSearchResponse;
4use crate::types::Leaderboard;
5
6pub struct LeaderboardNameSearchEndpoint {
7    leaderboard_id: Leaderboard,
8    battletag: String,
9}
10
11impl LeaderboardNameSearchEndpoint {
12    pub fn new(leaderboard_id: Leaderboard, battletag: String) -> Self {
13        Self {
14            leaderboard_id,
15            battletag,
16        }
17    }
18}
19
20impl Endpoint for LeaderboardNameSearchEndpoint {
21    type Request = ();
22    type Response = LeaderboardNameSearchResponse;
23
24    fn endpoint(&self) -> String {
25        format!(
26            "/web-api/v1/leaderboard-name-search/{}/{}",
27            self.leaderboard_id as i32,
28            urlencoding::encode(&self.battletag)
29        )
30    }
31}
32
33impl crate::client::ApiClient {
34    /// Search a leaderboard for players by battletag
35    ///
36    /// Endpoint: /web-api/v1/leaderboard-name-search/{leaderboard_id}/{battletag}
37    pub async fn search_leaderboard_by_battletag(
38        &self,
39        leaderboard_id: Leaderboard,
40        battletag: String,
41    ) -> Result<LeaderboardNameSearchResponse, ApiError> {
42        let endpoint = LeaderboardNameSearchEndpoint::new(leaderboard_id, battletag);
43        self.request(&endpoint, &()).await
44    }
45}