From f1541829109d988e485388cf09cfa1932e1c3a99 Mon Sep 17 00:00:00 2001 From: bigfoot547 Date: Tue, 17 Dec 2024 16:40:27 -0600 Subject: remove getter business --- src/version.rs | 158 ++++++++++++++++++------------------------------ src/version/manifest.rs | 78 +++++------------------- 2 files changed, 74 insertions(+), 162 deletions(-) diff --git a/src/version.rs b/src/version.rs index d120093..0c1e65f 100644 --- a/src/version.rs +++ b/src/version.rs @@ -65,46 +65,20 @@ impl<'de> Deserialize<'de> for WrappedRegex { #[derive(Deserialize, Debug)] pub struct OSRestriction { - name: Option, + pub name: Option, - version: Option, - arch: Option -} - -impl OSRestriction { - pub fn get_name(&self) -> Option { - self.name - } - - pub fn get_version(&self) -> Option<&Regex> { - self.version.as_deref() - } - - pub fn get_arch(&self) -> Option<&Regex> { - self.arch.as_deref() - } + pub version: Option, + pub arch: Option } #[derive(Deserialize, Debug)] pub struct CompatibilityRule { - action: RuleAction, - features: Option>, - os: Option + pub action: RuleAction, + pub features: Option>, + pub os: Option } impl CompatibilityRule { - pub fn get_action(&self) -> RuleAction { - self.action - } - - pub fn get_os(&self) -> Option<&OSRestriction> { - self.os.as_ref() - } - - pub fn get_features(&self) -> Option<&BTreeMap> { - self.features.as_ref() - } - pub fn features_match(&self, checker: fn(&str) -> bool) -> bool { if let Some(m) = self.features.as_ref() { for (feat, expect) in m { @@ -121,21 +95,11 @@ impl CompatibilityRule { #[derive(Deserialize, Debug)] pub struct Argument { #[serde(default)] - rules: Option>, + pub rules: Option>, #[serde(default)] #[serde(deserialize_with = "string_or_array")] - value: Vec -} - -impl Argument { - fn get_rules(&self) -> Option<&Vec> { - self.rules.as_ref() - } - - fn get_value(&self) -> &Vec { - &self.value - } + pub value: Vec } #[derive(Debug)] @@ -170,18 +134,8 @@ impl<'de> Deserialize<'de> for WrappedArgument { #[derive(Deserialize, Debug)] pub struct Arguments { - game: Option>, - jvm: Option> -} - -impl Arguments { - fn get_game(&self) -> Option<&Vec> { - self.game.as_ref() - } - - fn get_jvm(&self) -> Option<&Vec> { - self.jvm.as_ref() - } + pub game: Option>, + pub jvm: Option> } #[derive(Deserialize, Debug, PartialEq, Eq, PartialOrd, Ord)] @@ -196,91 +150,93 @@ pub enum DownloadType { #[derive(Deserialize, Debug)] pub struct DownloadInfo { - sha1: Option, - size: Option, - total_size: Option, // available for asset index - url: Option, // may not be present for libraries - id: Option, - path: Option + pub sha1: Option, + pub size: Option, + pub total_size: Option, // available for asset index + pub url: Option, // may not be present for libraries + pub id: Option, + pub path: Option } #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct JavaVersionInfo { - component: String, - major_version: u32 + pub component: String, + pub major_version: u32 } #[derive(Deserialize, Debug)] pub struct LibraryDownloads { - artifact: Option, - classifiers: Option> + pub artifact: Option, + pub classifiers: Option> } #[derive(Deserialize, Debug)] pub struct LibraryExtractRule { #[serde(default)] - exclude: Vec + pub exclude: Vec } #[derive(Deserialize, Debug)] pub struct Library { - downloads: Option, - name: String, - extract: Option, - natives: Option>, - rules: Option>, - url: Option // old format + pub downloads: Option, + pub name: String, + pub extract: Option, + pub natives: Option>, + pub rules: Option>, + pub url: Option // old format } #[derive(Deserialize, Debug)] pub struct ClientLogging { - argument: String, - r#type: String, - file: DownloadInfo + pub argument: String, + + #[serde(rename = "type")] + pub logger_type: String, + pub file: DownloadInfo } #[derive(Deserialize, Debug)] pub struct Logging { - client: ClientLogging // other fields unknown + pub client: ClientLogging // other fields unknown } #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct CompleteVersion { - arguments: Option, - minecraft_arguments: Option, + pub arguments: Option, + pub minecraft_arguments: Option, - asset_index: Option, - assets: Option, + pub asset_index: Option, + pub assets: Option, - compliance_level: Option, + pub compliance_level: Option, - java_version: Option, + pub java_version: Option, #[serde(default)] - downloads: BTreeMap, + pub downloads: BTreeMap, #[serde(default)] - libraries: Vec, + pub libraries: Vec, - id: String, - jar: Option, // used as the jar filename if specified? (no longer used officially) + pub id: String, + pub jar: Option, // used as the jar filename if specified? (no longer used officially) - logging: Option, + pub logging: Option, - main_class: Option, - minimum_launcher_version: Option, - release_time: Option>, - time: Option>, + pub main_class: Option, + pub minimum_launcher_version: Option, + pub release_time: Option>, + pub time: Option>, #[serde(rename = "type")] - version_type: Option, + pub version_type: Option, - compatibility_rules: Option>, // - incompatibility_reason: Option, // message shown when compatibility rules fail for this version + pub compatibility_rules: Option>, // + pub incompatibility_reason: Option, // message shown when compatibility rules fail for this version - inherits_from: Option + pub inherits_from: Option /* omitting field `savableVersion' because it seems like a vestigial part from old launcher versions * (also it isn't even a string that is present in modern liblauncher.so, so I assume it will never be used.) @@ -360,8 +316,6 @@ where mod tests { use std::fs; - use serde_json::json; - use super::*; #[test] @@ -371,4 +325,12 @@ mod tests { let arg: CompleteVersion = serde_json::from_str(s.unwrap().as_str()).unwrap(); dbg!(arg); } + + #[test] + fn test_it2() { + let s = fs::read_to_string("./test_stuff/version_manifest_v2.json"); + + let arg: VersionManifest = serde_json::from_str(s.unwrap().as_str()).unwrap(); + dbg!(arg); + } } diff --git a/src/version/manifest.rs b/src/version/manifest.rs index a44e435..1fa8041 100644 --- a/src/version/manifest.rs +++ b/src/version/manifest.rs @@ -3,20 +3,10 @@ use core::fmt; use chrono::{DateTime, Utc}; use serde::{de::Visitor, Deserialize}; -#[derive(Deserialize)] +#[derive(Deserialize, Debug)] pub struct LatestVersions { - release: String, - snapshot: String -} - -impl LatestVersions { - pub fn get_release(&self) -> &String { - &self.release - } - - pub fn get_snapshot(&self) -> &String { - &self.snapshot - } + pub release: String, + pub snapshot: String } #[derive(Debug)] @@ -59,61 +49,21 @@ impl<'de> Deserialize<'de> for VersionType { } // https://piston-meta.mojang.com/mc/game/version_manifest_v2.json -#[derive(Deserialize)] +#[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct VersionManifestVersion { - id: String, + pub id: String, #[serde(rename = "type")] - version_type: VersionType, - url: String, - time: DateTime, - release_time: DateTime, - sha1: String, - compliance_level: u32 + pub version_type: VersionType, + pub url: String, + pub time: DateTime, + pub release_time: DateTime, + pub sha1: String, + pub compliance_level: u32 } -impl VersionManifestVersion { - pub fn get_id(&self) -> &String { - &self.id - } - - pub fn get_version_type(&self) -> &VersionType { - &self.version_type - } - - pub fn get_url(&self) -> &String { - &self.url - } - - pub fn get_time(&self) -> &DateTime { - &self.time - } - - pub fn get_release_time(&self) -> &DateTime { - &self.release_time - } - - pub fn get_sha1(&self) -> &String { - &self.sha1 - } - - pub fn get_compliance_level(&self) -> u32 { - self.compliance_level - } -} - -#[derive(Deserialize)] +#[derive(Deserialize, Debug)] pub struct VersionManifest { - latest: LatestVersions, - versions: Vec -} - -impl VersionManifest { - pub fn get_latest(&self) -> &LatestVersions { - &self.latest - } - - pub fn get_versions(&self) -> &Vec { - &self.versions - } + pub latest: LatestVersions, + pub versions: Vec } -- cgit v1.2.3-70-g09d2