use std::collections::HashMap; use reqwest::Client; use serde::Deserialize; #[derive(Deserialize)] struct ForgeVersionResponse { promos: HashMap, } pub async fn newest_forge_version( http: &Client, mcversion: &str, ) -> anyhow::Result> { let resp = http .get("https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json") .send() .await? .bytes() .await?; let mut resp = json5::from_str::(std::str::from_utf8(&resp)?)?; Ok(resp.promos.remove(&format!("{}-latest", mcversion))) } #[inline] pub fn parse_version(version: &str) -> Option<&str> { version.split('-').nth(1) }