legacympt-rs/mpt/src/forge.rs
2021-08-29 15:14:10 +02:00

31 lines
717 B
Rust

use std::collections::HashMap;
use reqwest::Client;
use serde::Deserialize;
#[derive(Deserialize)]
struct ForgeVersionResponse {
promos: HashMap<String, String>,
}
pub async fn newest_forge_version(
http: &Client,
mcversion: &str,
) -> anyhow::Result<Option<String>> {
let resp = http
.get("https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json")
.send()
.await?
.bytes()
.await?;
let mut resp = json5::from_str::<ForgeVersionResponse>(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)
}