lyceris 1.1.3

An open source Minecraft launcher library.
Documentation
use std::collections::HashMap;

use serde::{Deserialize, Serialize};

pub type JavaManifest = HashMap<String, HashMap<String, Vec<Gamecore>>>;

#[derive(Serialize, Deserialize)]
pub struct Gamecore {
    pub availability: Availability,
    pub manifest: FileMap,
    pub version: Version,
}

#[derive(Serialize, Deserialize)]
pub struct Availability {
    pub group: u32,
    pub progress: u16,
}

#[derive(Serialize, Deserialize)]
pub struct FileMap {
    pub sha1: String,
    pub size: u64,
    pub url: String,
}

#[derive(Serialize, Deserialize)]
pub struct Version {
    pub name: String,
    pub released: String,
}

#[derive(Serialize, Deserialize)]
pub struct JavaFileManifest {
    pub files: HashMap<String, File>,
}

#[derive(Serialize, Deserialize)]
pub struct File {
    pub r#type: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub downloads: Option<Downloads>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub executable: Option<bool>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub target: Option<String>,
}

#[derive(Serialize, Deserialize)]
pub struct Downloads {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub lzma: Option<FileMap>,
    pub raw: FileMap,
}