1use crate::api::DDApi;
2use crate::scheme::ddnet::*;
3use anyhow::Result;
4use std::future::Future;
5
6#[allow(dead_code)]
7pub trait DDnetApi {
8 fn master(&self) -> impl Future<Output = Result<Master>> + Send;
9 fn skins(&self) -> impl Future<Output = Result<DDSkins>> + Send;
10 fn custom_master(&self, master: MasterServer) -> impl Future<Output = Result<Master>> + Send;
11 fn player(&self, player: &str) -> impl Future<Output = Result<Player>> + Send;
12 fn query(&self, player: &str) -> impl Future<Output = Result<Vec<Query>>> + Send;
13 fn query_map(&self, player: &str) -> impl Future<Output = Result<Vec<QueryMap>>> + Send;
14 fn query_mapper(&self, player: &str) -> impl Future<Output = Result<Vec<QueryMapper>>> + Send;
15 fn map(&self, map: &str) -> impl Future<Output = Result<Map>> + Send;
16 fn releases_map(&self) -> impl Future<Output = Result<Vec<ReleasesMaps>>> + Send;
17 fn status(&self) -> impl Future<Output = Result<Status>> + Send;
18}
19
20impl DDnetApi for DDApi {
21 async fn master(&self) -> Result<Master> {
22 self.custom_master(MasterServer::One).await
23 }
24
25 async fn skins(&self) -> Result<DDSkins> {
26 self._generator(&DDSkins::api(), false).await
27 }
28
29 async fn custom_master(&self, master: MasterServer) -> Result<Master> {
30 self._generator(&Master::api(master), false).await
31 }
32
33 async fn player(&self, player: &str) -> Result<Player> {
34 self._generator(&Player::api(player), true).await
35 }
36 async fn query(&self, player: &str) -> Result<Vec<Query>> {
37 self._generator(&Query::api(player), true).await
38 }
39
40 async fn query_map(&self, player: &str) -> Result<Vec<QueryMap>> {
41 self._generator(&QueryMap::api(player), true).await
42 }
43
44 async fn query_mapper(&self, player: &str) -> Result<Vec<QueryMapper>> {
45 self._generator(&QueryMapper::api(player), true).await
46 }
47
48 async fn map(&self, map: &str) -> Result<Map> {
49 self._generator(&Map::api(map), true).await
50 }
51 async fn releases_map(&self) -> Result<Vec<ReleasesMaps>> {
52 self._generator(&ReleasesMaps::api(), false).await
53 }
54
55 async fn status(&self) -> Result<Status> {
56 self._generator(&Status::api(), false).await
57 }
58}