scl_core/download/
structs.rs1use std::collections::BTreeMap as Map;
3
4use serde::Deserialize;
5
6#[derive(Debug, Deserialize, PartialEq, Eq)]
8pub struct VersionManifest {
9 pub latest: LatestVersion,
11 pub versions: Vec<VersionInfo>,
13}
14
15#[derive(Debug, Deserialize, PartialEq, Eq)]
17pub struct LatestVersion {
18 pub release: String,
20 pub snapshot: String,
22}
23
24#[derive(Debug, Deserialize, PartialEq, Eq, Clone, Default)]
26pub struct VersionInfo {
27 pub id: String,
29 #[serde(rename = "type")]
31 pub version_type: String,
32 pub url: String,
36 pub time: String,
38 #[serde(rename = "releaseTime")]
40 pub release_time: String,
41}
42
43#[derive(Debug, Deserialize, PartialEq, Eq, Default)]
45pub struct AssetIndexes {
46 #[serde(default)]
50 pub map_to_resources: bool,
51 pub objects: Map<String, AssetItem>,
53}
54
55#[derive(Debug, Deserialize, PartialEq, Eq)]
57pub struct AssetItem {
58 pub hash: String,
62 pub size: usize,
64}
65
66#[derive(Clone, Debug)]
68pub struct ForgeVersionsData {
69 pub recommended: Option<ForgeItemInfo>,
71 pub latest: Option<ForgeItemInfo>,
73 pub all_versions: Vec<ForgeItemInfo>,
75}
76
77#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
79pub struct ForgeItemInfo {
80 pub version: String,
84 pub mcversion: String,
86 pub files: Vec<ForgeFile>,
88}
89
90#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
92pub struct ForgePromoItem {
93 pub name: String,
95 pub build: Option<ForgeItemInfo>,
97}
98
99#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
101pub struct ForgeFile {
102 pub category: String,
104 pub format: String,
106}
107
108#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
110pub struct OptifineVersionMeta {
111 pub mcversion: String,
113 #[serde(rename = "type")]
115 pub version_type: String,
116 pub patch: String,
118 pub filename: String,
120}