From f7797c767ef9ff390c7610b7c07fa2048b1cf305 Mon Sep 17 00:00:00 2001 From: bluepilledgreat <97983689+bluepilledgreat@users.noreply.github.com> Date: Sun, 8 Jan 2023 19:25:21 +0000 Subject: [PATCH] optimise packagemanifest --- Bloxstrap/Helpers/RSMM/PackageManifest.cs | 89 ++++++++--------------- 1 file changed, 31 insertions(+), 58 deletions(-) diff --git a/Bloxstrap/Helpers/RSMM/PackageManifest.cs b/Bloxstrap/Helpers/RSMM/PackageManifest.cs index 4404809..a3dbd59 100644 --- a/Bloxstrap/Helpers/RSMM/PackageManifest.cs +++ b/Bloxstrap/Helpers/RSMM/PackageManifest.cs @@ -7,76 +7,49 @@ namespace Bloxstrap.Helpers.RSMM { internal class PackageManifest : List { - public string RawData { get; private set; } - private PackageManifest(string data) { - using (var reader = new StringReader(data)) + using StringReader reader = new StringReader(data); + string? version = reader.ReadLine(); + + if (version != "v0") + throw new NotSupportedException($"Unexpected package manifest version: {version} (expected v0!)"); + + while (true) { - string version = reader.ReadLine(); + string? fileName = reader.ReadLine(); + string? signature = reader.ReadLine(); - if (version != "v0") + string? rawPackedSize = reader.ReadLine(); + string? rawSize = reader.ReadLine(); + + if (string.IsNullOrEmpty(fileName) || + string.IsNullOrEmpty(signature) || + string.IsNullOrEmpty(rawPackedSize) || + string.IsNullOrEmpty(rawSize)) + break; + + // ignore launcher + if (fileName == "RobloxPlayerLauncher.exe") + break; + + int packedSize = int.Parse(rawPackedSize); + int size = int.Parse(rawSize); + + Add(new Package { - string errorMsg = $"Unexpected package manifest version: {version} (expected v0!)\n" + - "Please contact MaximumADHD if you see this error."; - - throw new NotSupportedException(errorMsg); - } - - bool eof = false; - - var readLine = new Func(() => - { - string line = reader.ReadLine(); - - if (line == null) - eof = true; - - return line; + Name = fileName, + Signature = signature, + PackedSize = packedSize, + Size = size }); - - while (!eof) - { - string fileName = readLine(); - string signature = readLine(); - - string rawPackedSize = readLine(); - string rawSize = readLine(); - - if (eof) - break; - - if (!int.TryParse(rawPackedSize, out int packedSize)) - break; - - if (!int.TryParse(rawSize, out int size)) - break; - - if (fileName == "RobloxPlayerLauncher.exe") - break; - - var package = new Package() - { - Name = fileName, - Signature = signature, - PackedSize = packedSize, - Size = size - }; - - Add(package); - } } - - RawData = data; } public static async Task Get(string versionGuid) { string pkgManifestUrl = $"{DeployManager.BaseUrl}/{versionGuid}-rbxPkgManifest.txt"; - string pkgManifestData; - - var getData = Program.HttpClient.GetStringAsync(pkgManifestUrl); - pkgManifestData = await getData.ConfigureAwait(false); + var pkgManifestData = await Program.HttpClient.GetStringAsync(pkgManifestUrl); return new PackageManifest(pkgManifestData); }