use std::borrow::Borrow;
use crate::types::enemy::Enemy;
use super::{
internal::{fetch_response, Endpoint},
BlueArchiveError, Client, Language, Result,
};
pub async fn fetch_all_enemies(
language: impl Borrow<Language>,
) -> Result<Vec<Enemy>, BlueArchiveError> {
Ok(
fetch_response(&Endpoint::Enemies, language.borrow(), &Client::new())
.await?
.json::<Vec<Enemy>>()
.await?,
)
}
pub async fn fetch_enemy_by_name(
language: impl Borrow<Language>,
name: impl AsRef<str>,
) -> Result<Option<Enemy>, BlueArchiveError> {
Ok(fetch_all_enemies(language)
.await?
.into_iter()
.find(|enemy| enemy.name.to_lowercase() == name.as_ref().to_lowercase()))
}