use crate::consts;
use serde::{Deserialize, Serialize};
#[cfg_attr(doc_cfg, doc(cfg(feature = "fabric")))]
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct FabricLoaderSummary {
pub loader: FabricLoaderInfo,
pub intermediary: FabricIntermediaryInfo,
}
impl FabricLoaderSummary {
pub async fn fetch_manifest(game_version: &str) -> reqwest::Result<Vec<Self>> {
let url = Self::version_url(game_version);
reqwest::get(url)
.await?
.error_for_status()?
.json::<Vec<Self>>()
.await
}
fn version_url(game_version: &str) -> String {
format!(
"{}/versions/loader/{}",
consts::FABRIC_BASE_V2_URL,
game_version
)
}
}
#[cfg_attr(doc_cfg, doc(cfg(feature = "fabric")))]
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct FabricLoaderInfo {
pub separator: String,
pub build: i32,
pub maven: String,
pub version: String,
pub stable: bool,
}
#[cfg_attr(doc_cfg, doc(cfg(feature = "fabric")))]
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct FabricIntermediaryInfo {
pub maven: String,
pub version: String,
pub stable: bool,
}