ddapi_rs/api/
ddnet.rs

1use crate::error_ddapi::ApiError;
2use crate::{DDApi, MasterServer};
3use crate::scheme::ddnet::{DDPlayer, DMap, Master, Query};
4
5#[allow(dead_code)]
6pub trait DDnetApi {
7    fn master(&self) -> impl std::future::Future<Output = Result<Master, ApiError>> + Send;
8    fn master_custom(
9        &self,
10        master: MasterServer,
11    ) -> impl std::future::Future<Output = Result<Master, ApiError>> + Send;
12    fn player(
13        &self,
14        player: &str,
15    ) -> impl std::future::Future<Output = Result<DDPlayer, ApiError>> + Send;
16    fn query(
17        &self,
18        player: &str,
19    ) -> impl std::future::Future<Output = Result<Query, ApiError>> + Send;
20    fn map(&self, map: &str) -> impl std::future::Future<Output = Result<DMap, ApiError>> + Send;
21}
22
23impl DDnetApi for DDApi {
24    async fn master(&self) -> Result<Master, ApiError> {
25        self._generator(&format!(
26            "https://master{}.ddnet.org/ddnet/15/servers.json",
27            MasterServer::One.get_index()
28        ))
29            .await
30    }
31
32    async fn master_custom(&self, master: MasterServer) -> Result<Master, ApiError> {
33        self._generator(&format!(
34            "https://master{}.ddnet.org/ddnet/15/servers.json",
35            master.get_index()
36        ))
37            .await
38    }
39
40    async fn player(&self, player: &str) -> Result<DDPlayer, ApiError> {
41        self._generator(&format!(
42            "https://ddnet.org/players/?json2={}",
43            self.encode_nickname(player).await
44        ))
45            .await
46    }
47    async fn query(&self, player: &str) -> Result<Query, ApiError> {
48        self._generator(&format!(
49            "https://ddnet.org/players/?query={}",
50            self.encode_nickname(player).await
51        ))
52            .await
53    }
54    async fn map(&self, map: &str) -> Result<DMap, ApiError> {
55        self._generator(&format!(
56            "https://ddnet.org/maps/?json={}",
57            self.encode_nickname(map).await
58        ))
59            .await
60    }
61}