use serde::{Deserialize, Serialize};
use crate::error::Result;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VersionInfo {
pub id: String,
pub r#type: String,
pub url: String,
pub time: String,
pub release_time: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VersionManifest {
pub latest: LatestVersions,
pub versions: Vec<VersionInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LatestVersions {
pub release: String,
pub snapshot: String,
}
impl VersionManifest {
pub async fn fetch() -> Result<Self> {
let client = reqwest::Client::new();
let response = client
.get("https://launchermeta.mojang.com/mc/game/version_manifest.json")
.send()
.await?;
let manifest: VersionManifest = response.json().await?;
Ok(manifest)
}
}