#[cfg(feature = "blocking")]
pub mod blocking;
pub mod currency;
pub mod enemy;
pub mod equipment;
pub mod raid;
pub mod student;
pub mod summon;
use crate::enums::Language;
use crate::filter::student::StudentFilterOptions;
use crate::types::{RaidData, Student, Summon};
use crate::{BlueArchiveError, DATA_URI};
use rand::seq::IteratorRandom;
use reqwest::Client;
pub use reqwest::{Request, Response, StatusCode};
use anyhow::Result;
use strum_macros::Display;
pub(crate) mod internal {
use super::{BlueArchiveError, Client, Display, Language, Response, Result, DATA_URI};
#[derive(Debug, Display)]
pub enum Endpoint {
_Localization,
_Voice,
_Furniture,
_Items,
Enemies,
Equipment,
Currency,
Raids,
Students,
Summons,
}
pub(crate) async fn fetch_response(
endpoint: &Endpoint,
language: &Language,
client: &Client,
) -> Result<Response, BlueArchiveError> {
let url = format!(
"{}/{}/{}.json",
DATA_URI,
language.id(),
endpoint.to_string().to_lowercase()
);
Ok(client.get(url).send().await?.error_for_status()?)
}
#[cfg(feature = "blocking")]
pub(crate) fn get_response(
endpoint: &Endpoint,
language: &Language,
client: &reqwest::blocking::Client,
) -> Result<reqwest::blocking::Response, BlueArchiveError> {
let url = format!(
"{}/{}/{}.json",
DATA_URI,
language.id(),
endpoint.to_string().to_lowercase()
);
Ok(client.get(url).send()?.error_for_status()?)
}
}