cobble_core/minecraft/fabric/
version_data.rs1use crate::consts;
2use crate::minecraft::fabric::FabricLibrary;
3use crate::minecraft::models::{LaunchArguments, VersionType};
4use serde::{Deserialize, Serialize};
5
6#[cfg_attr(doc_cfg, doc(cfg(feature = "fabric")))]
8#[derive(Clone, Debug, Deserialize, Serialize)]
9pub struct FabricVersionData {
10 pub arguments: Option<LaunchArguments>,
12 pub id: String,
14 #[serde(alias = "inheritsFrom")]
16 pub inherits_from: String,
17 pub libraries: Vec<FabricLibrary>,
19 #[serde(alias = "mainClass")]
21 pub main_class: String,
22 #[serde(rename = "type")]
24 pub _type: VersionType,
25}
26
27impl FabricVersionData {
28 pub async fn fetch(minecraft_version: &str, loader_version: &str) -> reqwest::Result<Self> {
30 let url = format!(
31 "{}/versions/loader/{}/{}/profile/json",
32 consts::FABRIC_BASE_V2_URL,
33 minecraft_version,
34 loader_version
35 );
36 reqwest::get(url).await?.error_for_status()?.json().await
37 }
38}