mc-launcher-core 0.1.0

This is an mc launcher core written in Rust.
Documentation
use serde::Deserialize;

use crate::{core::version::VersionJson, net::http, LauncherError, Result};

const FABRIC_META_BASE: &str = "https://meta.fabricmc.net/v2";

#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
pub struct FabricLoaderVersion {
    pub separator: String,
    pub build: i32,
    pub maven: String,
    pub version: String,
    pub stable: bool,
}

pub fn latest_stable_loader(versions: &[FabricLoaderVersion]) -> Result<&FabricLoaderVersion> {
    versions
        .iter()
        .find(|version| version.stable)
        .ok_or_else(|| LauncherError::LoaderVersionNotFound {
            loader: crate::loader::LoaderKind::Fabric,
            version: "latest stable".to_string(),
        })
}

pub fn list_loader_versions() -> Result<Vec<FabricLoaderVersion>> {
    http::get_json(&format!("{FABRIC_META_BASE}/versions/loader"))
}

pub fn fetch_profile(minecraft_version: &str, loader_version: &str) -> Result<VersionJson> {
    http::get_json(&format!(
        "{FABRIC_META_BASE}/versions/loader/{minecraft_version}/{loader_version}/profile/json"
    ))
}