use crate::client::endpoints::Endpoint;
use crate::client::BrawlClient;
use crate::data::brawlers::BrawlerId;
use crate::errors::BrawlError;
use crate::models::common::{BrawlerGear, Item};
use serde::Deserialize;
#[derive(Deserialize)]
pub struct Brawlers {
pub items: Vec<BrawlerInfo>,
}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BrawlerInfo {
pub id: u64,
pub name: String,
pub star_powers: Vec<Item>,
pub hyper_charges: Vec<Item>,
pub gears: Vec<BrawlerGear>,
pub gadgets: Vec<Item>,
}
impl Brawlers {
pub async fn get(client: &BrawlClient) -> Result<Self, BrawlError> {
let endpoint = Endpoint::Brawlers;
client.fetch::<Self>(endpoint).await
}
}
impl BrawlerInfo {
pub async fn get(client: &BrawlClient, id: BrawlerId) -> Result<Self, BrawlError> {
let endpoint = Endpoint::Brawler(id);
client.fetch::<Self>(endpoint).await
}
}