From 4ed3880bade98f408247559af072d51c9ea59cf0 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 3 Apr 2024 21:56:21 -0400 Subject: [PATCH] Use SabreTools.Hashing for hash types --- .../CrossModel/Hashfile.Deserializer.cs | 23 ++++----- .../Deserializers/Hashfile.cs | 49 +++++++++++-------- SabreTools.Serialization/Enums.cs | 13 ----- .../SabreTools.Serialization.csproj | 1 + .../Serializers/Hashfile.cs | 31 +++++++----- 5 files changed, 60 insertions(+), 57 deletions(-) delete mode 100644 SabreTools.Serialization/Enums.cs diff --git a/SabreTools.Serialization/CrossModel/Hashfile.Deserializer.cs b/SabreTools.Serialization/CrossModel/Hashfile.Deserializer.cs index c3b68ecb..d95f567c 100644 --- a/SabreTools.Serialization/CrossModel/Hashfile.Deserializer.cs +++ b/SabreTools.Serialization/CrossModel/Hashfile.Deserializer.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using SabreTools.Hashing; using SabreTools.Models.Hashfile; using SabreTools.Serialization.Interfaces; @@ -8,10 +9,10 @@ namespace SabreTools.Serialization.CrossModel public partial class Hashfile : IModelSerializer { /// - public Models.Hashfile.Hashfile? Deserialize(Models.Metadata.MetadataFile? obj) => Deserialize(obj, Hash.CRC); + public Models.Hashfile.Hashfile? Deserialize(Models.Metadata.MetadataFile? obj) => Deserialize(obj, HashType.CRC32); /// - public Models.Hashfile.Hashfile? Deserialize(Models.Metadata.MetadataFile? obj, Hash hash) + public Models.Hashfile.Hashfile? Deserialize(Models.Metadata.MetadataFile? obj, HashType hash) { if (obj == null) return null; @@ -73,7 +74,7 @@ namespace SabreTools.Serialization.CrossModel /// /// Convert from to an array of /// - public static Models.Hashfile.Hashfile[]? ConvertArrayFromInternalModel(Models.Metadata.MetadataFile? item, Hash hash) + public static Models.Hashfile.Hashfile[]? ConvertArrayFromInternalModel(Models.Metadata.MetadataFile? item, HashType hash) { if (item == null) return null; @@ -93,7 +94,7 @@ namespace SabreTools.Serialization.CrossModel /// /// Convert from to /// - private static Models.Hashfile.Hashfile ConvertMachineFromInternalModel(Models.Metadata.Machine item, Hash hash) + private static Models.Hashfile.Hashfile ConvertMachineFromInternalModel(Models.Metadata.Machine item, HashType hash) { var roms = item.Read(Models.Metadata.Machine.RomKey); if (roms == null) @@ -101,43 +102,43 @@ namespace SabreTools.Serialization.CrossModel return new Models.Hashfile.Hashfile { - SFV = hash == Hash.CRC + SFV = hash == HashType.CRC32 || hash == HashType.CRC32_ISO || hash == HashType.CRC32_Naive || hash == HashType.CRC32_Optimized || hash == HashType.CRC32_Parallel ? roms .Where(r => r != null) .Select(ConvertToSFV) .ToArray() : null, - MD5 = hash == Hash.MD5 + MD5 = hash == HashType.MD5 ? roms .Where(r => r != null) .Select(ConvertToMD5) .ToArray() : null, - SHA1 = hash == Hash.SHA1 + SHA1 = hash == HashType.SHA1 ? roms .Where(r => r != null) .Select(ConvertToSHA1) .ToArray() : null, - SHA256 = hash == Hash.SHA256 + SHA256 = hash == HashType.SHA256 ? roms .Where(r => r != null) .Select(ConvertToSHA256) .ToArray() : null, - SHA384 = hash == Hash.SHA384 + SHA384 = hash == HashType.SHA384 ? roms .Where(r => r != null) .Select(ConvertToSHA384) .ToArray() : null, - SHA512 = hash == Hash.SHA512 + SHA512 = hash == HashType.SHA512 ? roms .Where(r => r != null) .Select(ConvertToSHA512) .ToArray() : null, - SpamSum = hash == Hash.SpamSum + SpamSum = hash == HashType.SpamSum ? roms .Where(r => r != null) .Select(ConvertToSpamSum) diff --git a/SabreTools.Serialization/Deserializers/Hashfile.cs b/SabreTools.Serialization/Deserializers/Hashfile.cs index 48855b36..8e5f0481 100644 --- a/SabreTools.Serialization/Deserializers/Hashfile.cs +++ b/SabreTools.Serialization/Deserializers/Hashfile.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using SabreTools.Hashing; using SabreTools.Models.Hashfile; using SabreTools.Serialization.Interfaces; @@ -15,7 +16,7 @@ namespace SabreTools.Serialization.Deserializers #region IFileDeserializer /// - public static Models.Hashfile.Hashfile? DeserializeFile(string? path, Hash hash = Hash.CRC) + public static Models.Hashfile.Hashfile? DeserializeFile(string? path, HashType hash = HashType.CRC32) { var deserializer = new Hashfile(); return deserializer.Deserialize(path, hash); @@ -23,10 +24,10 @@ namespace SabreTools.Serialization.Deserializers /// public Models.Hashfile.Hashfile? Deserialize(string? path) - => Deserialize(path, Hash.CRC); + => Deserialize(path, HashType.CRC32); /// - public Models.Hashfile.Hashfile? Deserialize(string? path, Hash hash) + public Models.Hashfile.Hashfile? Deserialize(string? path, HashType hash) { using var stream = PathProcessor.OpenStream(path); return DeserializeStream(stream, hash); @@ -37,7 +38,7 @@ namespace SabreTools.Serialization.Deserializers #region IStreamDeserializer /// - public static Models.Hashfile.Hashfile? DeserializeStream(Stream? data, Hash hash = Hash.CRC) + public static Models.Hashfile.Hashfile? DeserializeStream(Stream? data, HashType hash = HashType.CRC32) { var deserializer = new Hashfile(); return deserializer.Deserialize(data, hash); @@ -45,10 +46,10 @@ namespace SabreTools.Serialization.Deserializers /// public Models.Hashfile.Hashfile? Deserialize(Stream? data) - => Deserialize(data, Hash.CRC); + => Deserialize(data, HashType.CRC32); /// - public Models.Hashfile.Hashfile? Deserialize(Stream? data, Hash hash) + public Models.Hashfile.Hashfile? Deserialize(Stream? data, HashType hash) { // If the stream is null if (data == null) @@ -76,7 +77,11 @@ namespace SabreTools.Serialization.Deserializers // Parse the line into a hash switch (hash) { - case Hash.CRC: + case HashType.CRC32: + case HashType.CRC32_ISO: + case HashType.CRC32_Naive: + case HashType.CRC32_Optimized: + case HashType.CRC32_Parallel: var sfv = new SFV { #if NETFRAMEWORK @@ -89,7 +94,7 @@ namespace SabreTools.Serialization.Deserializers }; hashes.Add(sfv); break; - case Hash.MD5: + case HashType.MD5: var md5 = new MD5 { Hash = lineParts[0], @@ -101,7 +106,7 @@ namespace SabreTools.Serialization.Deserializers }; hashes.Add(md5); break; - case Hash.SHA1: + case HashType.SHA1: var sha1 = new SHA1 { Hash = lineParts[0], @@ -113,7 +118,7 @@ namespace SabreTools.Serialization.Deserializers }; hashes.Add(sha1); break; - case Hash.SHA256: + case HashType.SHA256: var sha256 = new SHA256 { Hash = lineParts[0], @@ -125,7 +130,7 @@ namespace SabreTools.Serialization.Deserializers }; hashes.Add(sha256); break; - case Hash.SHA384: + case HashType.SHA384: var sha384 = new SHA384 { Hash = lineParts[0], @@ -137,7 +142,7 @@ namespace SabreTools.Serialization.Deserializers }; hashes.Add(sha384); break; - case Hash.SHA512: + case HashType.SHA512: var sha512 = new SHA512 { Hash = lineParts[0], @@ -149,7 +154,7 @@ namespace SabreTools.Serialization.Deserializers }; hashes.Add(sha512); break; - case Hash.SpamSum: + case HashType.SpamSum: var spamSum = new SpamSum { Hash = lineParts[0], @@ -167,25 +172,29 @@ namespace SabreTools.Serialization.Deserializers // Assign the hashes to the hashfile and return switch (hash) { - case Hash.CRC: + case HashType.CRC32: + case HashType.CRC32_ISO: + case HashType.CRC32_Naive: + case HashType.CRC32_Optimized: + case HashType.CRC32_Parallel: dat.SFV = hashes.Cast().ToArray(); break; - case Hash.MD5: + case HashType.MD5: dat.MD5 = hashes.Cast().ToArray(); break; - case Hash.SHA1: + case HashType.SHA1: dat.SHA1 = hashes.Cast().ToArray(); break; - case Hash.SHA256: + case HashType.SHA256: dat.SHA256 = hashes.Cast().ToArray(); break; - case Hash.SHA384: + case HashType.SHA384: dat.SHA384 = hashes.Cast().ToArray(); break; - case Hash.SHA512: + case HashType.SHA512: dat.SHA512 = hashes.Cast().ToArray(); break; - case Hash.SpamSum: + case HashType.SpamSum: dat.SpamSum = hashes.Cast().ToArray(); break; } diff --git a/SabreTools.Serialization/Enums.cs b/SabreTools.Serialization/Enums.cs deleted file mode 100644 index 4fe1c24d..00000000 --- a/SabreTools.Serialization/Enums.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace SabreTools.Serialization -{ - public enum Hash - { - CRC, - MD5, - SHA1, - SHA256, - SHA384, - SHA512, - SpamSum, - } -} \ No newline at end of file diff --git a/SabreTools.Serialization/SabreTools.Serialization.csproj b/SabreTools.Serialization/SabreTools.Serialization.csproj index 55be2b8f..06e124af 100644 --- a/SabreTools.Serialization/SabreTools.Serialization.csproj +++ b/SabreTools.Serialization/SabreTools.Serialization.csproj @@ -28,6 +28,7 @@ + diff --git a/SabreTools.Serialization/Serializers/Hashfile.cs b/SabreTools.Serialization/Serializers/Hashfile.cs index 3b84d8ae..df807b85 100644 --- a/SabreTools.Serialization/Serializers/Hashfile.cs +++ b/SabreTools.Serialization/Serializers/Hashfile.cs @@ -2,6 +2,7 @@ using System; using System.IO; using System.Linq; using System.Text; +using SabreTools.Hashing; using SabreTools.IO.Writers; using SabreTools.Models.Hashfile; using SabreTools.Serialization.Interfaces; @@ -16,7 +17,7 @@ namespace SabreTools.Serialization.Serializers #region IFileSerializer /// - public static bool SerializeFile(Models.Hashfile.Hashfile? obj, string? path, Hash hash = Hash.CRC) + public static bool SerializeFile(Models.Hashfile.Hashfile? obj, string? path, HashType hash = HashType.CRC32) { var serializer = new Hashfile(); return serializer.Serialize(obj, path, hash); @@ -24,10 +25,10 @@ namespace SabreTools.Serialization.Serializers /// public bool Serialize(Models.Hashfile.Hashfile? obj, string? path) - => Serialize(obj, path, Hash.CRC); + => Serialize(obj, path, HashType.CRC32); /// - public bool Serialize(Models.Hashfile.Hashfile? obj, string? path, Hash hash) + public bool Serialize(Models.Hashfile.Hashfile? obj, string? path, HashType hash) { if (string.IsNullOrEmpty(path)) return false; @@ -46,7 +47,7 @@ namespace SabreTools.Serialization.Serializers #region IStreamSerializer /// - public static Stream? SerializeStream(Models.Hashfile.Hashfile? obj, Hash hash = Hash.CRC) + public static Stream? SerializeStream(Models.Hashfile.Hashfile? obj, HashType hash = HashType.CRC32) { var serializer = new Hashfile(); return serializer.Serialize(obj, hash); @@ -54,10 +55,10 @@ namespace SabreTools.Serialization.Serializers /// public Stream? Serialize(Models.Hashfile.Hashfile? obj) - => Serialize(obj, Hash.CRC); + => Serialize(obj, HashType.CRC32); /// - public Stream? Serialize(Models.Hashfile.Hashfile? obj, Hash hash) + public Stream? Serialize(Models.Hashfile.Hashfile? obj, HashType hash) { // If the metadata file is null if (obj == null) @@ -75,25 +76,29 @@ namespace SabreTools.Serialization.Serializers // Write out the items, if they exist switch (hash) { - case Hash.CRC: + case HashType.CRC32: + case HashType.CRC32_ISO: + case HashType.CRC32_Naive: + case HashType.CRC32_Optimized: + case HashType.CRC32_Parallel: WriteSFV(obj.SFV, writer); break; - case Hash.MD5: + case HashType.MD5: WriteMD5(obj.MD5, writer); break; - case Hash.SHA1: + case HashType.SHA1: WriteSHA1(obj.SHA1, writer); break; - case Hash.SHA256: + case HashType.SHA256: WriteSHA256(obj.SHA256, writer); break; - case Hash.SHA384: + case HashType.SHA384: WriteSHA384(obj.SHA384, writer); break; - case Hash.SHA512: + case HashType.SHA512: WriteSHA512(obj.SHA512, writer); break; - case Hash.SpamSum: + case HashType.SpamSum: WriteSpamSum(obj.SpamSum, writer); break; default: