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}