use crate::consts;
use crate::minecraft::fabric::FabricLibrary;
use crate::minecraft::models::{LaunchArguments, VersionType};
use serde::{Deserialize, Serialize};
#[cfg_attr(doc_cfg, doc(cfg(feature = "fabric")))]
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct FabricVersionData {
pub arguments: Option<LaunchArguments>,
pub id: String,
#[serde(alias = "inheritsFrom")]
pub inherits_from: String,
pub libraries: Vec<FabricLibrary>,
#[serde(alias = "mainClass")]
pub main_class: String,
#[serde(rename = "type")]
pub _type: VersionType,
}
impl FabricVersionData {
pub async fn fetch(minecraft_version: &str, loader_version: &str) -> reqwest::Result<Self> {
let url = format!(
"{}/versions/loader/{}/{}/profile/json",
consts::FABRIC_BASE_V2_URL,
minecraft_version,
loader_version
);
reqwest::get(url).await?.error_for_status()?.json().await
}
}