use crate::api::http;
use crate::objects::{Player, PlayerResponse, Guild, GuildResponse};
use crate::Error;
pub struct Client {
key: String
}
impl Client {
pub fn login(key: &str) -> Self {
Self { key: key.to_string() }
}
pub async fn player_from_uuid(&self, uuid: &str) -> Result<Player, Error> {
let res = http::fetch::<PlayerResponse>(
&format!("player?uuid={uuid}&key={}", &self.key)
).await?;
Ok(res.player)
}
pub async fn guild_from_name(&self, name: &str) -> Result<Option<Guild>, Error> {
let res = http::fetch::<GuildResponse>(
&format!("guild?name={name}&key={}", &self.key)
).await?;
Ok(res.guild)
}
pub async fn guild_from_id(&self, id: &str) -> Result<Option<Guild>, Error> {
let res = http::fetch::<GuildResponse>(
&format!("guild?id={id}&key={}", &self.key)
).await?;
Ok(res.guild)
}
pub fn key(&self) -> &str {
&self.key
}
}