diff --git a/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs b/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs index 1c7b370..1af9902 100644 --- a/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs +++ b/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs @@ -315,6 +315,117 @@ namespace SabreTools.RedumpLib.Test.Data #endregion + #region Dump Status + + /// + /// Check that every DumpStatus has a long name provided + /// + /// DumpStatus value to check + /// True to expect a null value, false otherwise + [Theory] + [MemberData(nameof(GenerateDumpStatusTestData))] + public void DumpStatus_LongName(DumpStatus? dumpStatus, bool expectNull) + { + var actual = dumpStatus.LongName(); + + if (expectNull) + Assert.Null(actual); + else + Assert.NotNull(actual); + } + + /// + /// Check that every DumpStatus has a short name provided + /// + /// DumpStatus value to check + /// True to expect a null value, false otherwise + [Theory] + [MemberData(nameof(GenerateDumpStatusTestData))] + public void DumpStatus_ShortName(DumpStatus? dumpStatus, bool expectNull) + { + var actual = dumpStatus.ShortName(); + + if (expectNull) + Assert.Null(actual); + else + Assert.NotNull(actual); + } + + /// + /// Ensure that every DumpStatus that has a short name that is unique + /// + [Fact] + public void DumpStatus_ShortName_NoDuplicates() + { + var fullDumpStatuses = Enum.GetValues().Cast().ToList(); + var filteredDumpStatuses = new Dictionary(); + + int totalCount = 0; + foreach (DumpStatus? dumpStatus in fullDumpStatuses) + { + var code = dumpStatus.ShortName(); + if (string.IsNullOrEmpty(code)) + continue; + + // Throw if the code already exists + if (filteredDumpStatuses.ContainsKey(code)) + throw new DuplicateNameException($"Code {code} already in dictionary"); + + filteredDumpStatuses[code] = dumpStatus; + totalCount++; + } + + Assert.Equal(totalCount, filteredDumpStatuses.Count); + } + + /// + /// Check that every DumpStatus can be mapped from a string + /// + /// DumpStatus value to check + /// True to expect a null value, false otherwise + [Theory] + [MemberData(nameof(GenerateDumpStatusTestData))] + public void DumpStatus_ToDumpStatus(DumpStatus? dumpStatus, bool expectNull) + { + string? longName = dumpStatus.LongName(); + string? longNameSpaceless = longName?.Replace(" ", string.Empty); + string? possibleInteger = $"{(int?)dumpStatus}"; + + var actualNormal = longName.ToDumpStatus(); + var actualSpaceless = longNameSpaceless.ToDumpStatus(); + var actualInteger = possibleInteger.ToDumpStatus(); + + if (expectNull) + { + Assert.Null(actualNormal); + Assert.Null(actualSpaceless); + Assert.Null(actualInteger); + } + else + { + Assert.Equal(dumpStatus, actualNormal); + Assert.Equal(dumpStatus, actualSpaceless); + Assert.Equal(dumpStatus, actualInteger); + } + } + + /// + /// Generate a test set of DumpStatus values + /// + /// MemberData-compatible list of DumpStatus values + public static TheoryData GenerateDumpStatusTestData() + { + var testData = new TheoryData() { { null, true } }; + foreach (DumpStatus? dumpStatus in Enum.GetValues().Cast()) + { + testData.Add(dumpStatus, false); + } + + return testData; + } + + #endregion + #region Language /// diff --git a/SabreTools.RedumpLib.Test/RedumpInfo/ExtensionsTests.cs b/SabreTools.RedumpLib.Test/RedumpInfo/ExtensionsTests.cs deleted file mode 100644 index a7fdb4b..0000000 --- a/SabreTools.RedumpLib.Test/RedumpInfo/ExtensionsTests.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.RedumpInfo.Data; -using Xunit; - -namespace SabreTools.RedumpLib.Test.RedumpInfo -{ - public class ExtensionsTests - { - #region Dump Status - - /// - /// Check that every DumpStatus has a long name provided - /// - /// DumpStatus value to check - /// True to expect a null value, false otherwise - [Theory] - [MemberData(nameof(GenerateDumpStatusTestData))] - public void DumpStatus_LongName(DumpStatus? dumpStatus, bool expectNull) - { - var actual = dumpStatus.LongName(); - - if (expectNull) - Assert.Null(actual); - else - Assert.NotNull(actual); - } - - /// - /// Check that every DumpStatus has a short name provided - /// - /// DumpStatus value to check - /// True to expect a null value, false otherwise - [Theory] - [MemberData(nameof(GenerateDumpStatusTestData))] - public void DumpStatus_ShortName(DumpStatus? dumpStatus, bool expectNull) - { - var actual = dumpStatus.ShortName(); - - if (expectNull) - Assert.Null(actual); - else - Assert.NotNull(actual); - } - - /// - /// Ensure that every DumpStatus that has a short name that is unique - /// - [Fact] - public void DumpStatus_ShortName_NoDuplicates() - { - var fullDumpStatuses = Enum.GetValues().Cast().ToList(); - var filteredDumpStatuses = new Dictionary(); - - int totalCount = 0; - foreach (DumpStatus? dumpStatus in fullDumpStatuses) - { - var code = dumpStatus.ShortName(); - if (string.IsNullOrEmpty(code)) - continue; - - // Throw if the code already exists - if (filteredDumpStatuses.ContainsKey(code)) - throw new DuplicateNameException($"Code {code} already in dictionary"); - - filteredDumpStatuses[code] = dumpStatus; - totalCount++; - } - - Assert.Equal(totalCount, filteredDumpStatuses.Count); - } - - /// - /// Check that every DumpStatus can be mapped from a string - /// - /// DumpStatus value to check - /// True to expect a null value, false otherwise - [Theory] - [MemberData(nameof(GenerateDumpStatusTestData))] - public void DumpStatus_ToDumpStatus(DumpStatus? dumpStatus, bool expectNull) - { - string? longName = dumpStatus.LongName(); - string? longNameSpaceless = longName?.Replace(" ", string.Empty); - string? possibleInteger = $"{(int?)dumpStatus}"; - - var actualNormal = longName.ToDumpStatus(); - var actualSpaceless = longNameSpaceless.ToDumpStatus(); - var actualInteger = possibleInteger.ToDumpStatus(); - - if (expectNull) - { - Assert.Null(actualNormal); - Assert.Null(actualSpaceless); - Assert.Null(actualInteger); - } - else - { - Assert.Equal(dumpStatus, actualNormal); - Assert.Equal(dumpStatus, actualSpaceless); - Assert.Equal(dumpStatus, actualInteger); - } - } - - /// - /// Generate a test set of DumpStatus values - /// - /// MemberData-compatible list of DumpStatus values - public static TheoryData GenerateDumpStatusTestData() - { - var testData = new TheoryData() { { null, true } }; - foreach (DumpStatus? dumpStatus in Enum.GetValues().Cast()) - { - testData.Add(dumpStatus, false); - } - - return testData; - } - - #endregion - } -} diff --git a/SabreTools.RedumpLib.Test/RedumpOrg/ExtensionsTests.cs b/SabreTools.RedumpLib.Test/RedumpOrg/ExtensionsTests.cs index 9a557c6..4c56884 100644 --- a/SabreTools.RedumpLib.Test/RedumpOrg/ExtensionsTests.cs +++ b/SabreTools.RedumpLib.Test/RedumpOrg/ExtensionsTests.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Data; using System.Linq; using SabreTools.RedumpLib.Data; @@ -10,117 +9,6 @@ namespace SabreTools.RedumpLib.Test.RedumpOrg { public class ExtensionsTests { - #region Dump Status - - /// - /// Check that every DumpStatus has a long name provided - /// - /// DumpStatus value to check - /// True to expect a null value, false otherwise - [Theory] - [MemberData(nameof(GenerateDumpStatusTestData))] - public void DumpStatus_LongName(DumpStatus? dumpStatus, bool expectNull) - { - var actual = dumpStatus.LongName(); - - if (expectNull) - Assert.Null(actual); - else - Assert.NotNull(actual); - } - - /// - /// Check that every DumpStatus has a short name provided - /// - /// DumpStatus value to check - /// True to expect a null value, false otherwise - [Theory] - [MemberData(nameof(GenerateDumpStatusTestData))] - public void DumpStatus_ShortName(DumpStatus? dumpStatus, bool expectNull) - { - var actual = dumpStatus.ShortName(); - - if (expectNull) - Assert.Null(actual); - else - Assert.NotNull(actual); - } - - /// - /// Ensure that every DumpStatus that has a short name that is unique - /// - [Fact] - public void DumpStatus_ShortName_NoDuplicates() - { - var fullDumpStatuses = Enum.GetValues().Cast().ToList(); - var filteredDumpStatuses = new Dictionary(); - - int totalCount = 0; - foreach (DumpStatus? dumpStatus in fullDumpStatuses) - { - var code = dumpStatus.ShortName(); - if (string.IsNullOrEmpty(code)) - continue; - - // Throw if the code already exists - if (filteredDumpStatuses.ContainsKey(code)) - throw new DuplicateNameException($"Code {code} already in dictionary"); - - filteredDumpStatuses[code] = dumpStatus; - totalCount++; - } - - Assert.Equal(totalCount, filteredDumpStatuses.Count); - } - - /// - /// Check that every DumpStatus can be mapped from a string - /// - /// DumpStatus value to check - /// True to expect a null value, false otherwise - [Theory] - [MemberData(nameof(GenerateDumpStatusTestData))] - public void DumpStatus_ToDumpStatus(DumpStatus? dumpStatus, bool expectNull) - { - string? longName = dumpStatus.LongName(); - string? longNameSpaceless = longName?.Replace(" ", string.Empty); - string? possibleInteger = $"{(int?)dumpStatus}"; - - var actualNormal = longName.ToDumpStatus(); - var actualSpaceless = longNameSpaceless.ToDumpStatus(); - var actualInteger = possibleInteger.ToDumpStatus(); - - if (expectNull) - { - Assert.Null(actualNormal); - Assert.Null(actualSpaceless); - Assert.Null(actualInteger); - } - else - { - Assert.Equal(dumpStatus, actualNormal); - Assert.Equal(dumpStatus, actualSpaceless); - Assert.Equal(dumpStatus, actualInteger); - } - } - - /// - /// Generate a test set of DumpStatus values - /// - /// MemberData-compatible list of DumpStatus values - public static TheoryData GenerateDumpStatusTestData() - { - var testData = new TheoryData() { { null, true } }; - foreach (DumpStatus? dumpStatus in Enum.GetValues().Cast()) - { - testData.Add(dumpStatus, false); - } - - return testData; - } - - #endregion - #region Language Selection /// diff --git a/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs b/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs index f6c9206..613b1b8 100644 --- a/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs +++ b/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs @@ -135,7 +135,7 @@ namespace SabreTools.RedumpLib.Test DumpersAndStatus = new DumpersAndStatusSection() { - Status = DumpStatus.TwoOrMoreGreen, + Status = DumpStatus.VerifiedGreen, Dumpers = ["Dumper1", "Dumper2"], OtherDumpers = "Dumper3", }, diff --git a/SabreTools.RedumpLib/Data/Enumerations.cs b/SabreTools.RedumpLib/Data/Enumerations.cs index 2da7edd..38bdd45 100644 --- a/SabreTools.RedumpLib/Data/Enumerations.cs +++ b/SabreTools.RedumpLib/Data/Enumerations.cs @@ -95,6 +95,32 @@ namespace SabreTools.RedumpLib.Data WIP, } + /// + /// Dump status + /// + public enum DumpStatus + { + // TODO: Verify new naming + [HumanReadable(LongName = "Unknown", ShortName = "grey")] + UnknownGrey = 1, + + // TODO: Verify new naming + [HumanReadable(LongName = "Bad Dump", ShortName = "red")] + BadDumpRed = 2, + + // Known as "Possible Bad Dump" on redump.org + [HumanReadable(LongName = "Questionable", ShortName = "yellow")] + QuestionableYellow = 3, + + // Known as "Original Media" on redump.org + [HumanReadable(LongName = "Unverified", ShortName = "blue")] + UnverifiedBlue = 4, + + // Known as "Two or More" on redump.org + [HumanReadable(LongName = "Verified", ShortName = "green")] + VerifiedGreen = 5, + } + /// /// List of all disc langauges /// diff --git a/SabreTools.RedumpLib/Data/Extensions.cs b/SabreTools.RedumpLib/Data/Extensions.cs index 0f8f3fa..35ec8db 100644 --- a/SabreTools.RedumpLib/Data/Extensions.cs +++ b/SabreTools.RedumpLib/Data/Extensions.cs @@ -998,6 +998,74 @@ namespace SabreTools.RedumpLib.Data #endregion + #region Dump Status + + /// + /// Get the human readable name for a DumpStatus + /// + /// + /// + public static string? LongName(this DumpStatus dumpStatus) + => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.LongName; + + /// + /// Get the human readable name for a DumpStatus + /// + /// + /// + public static string? LongName(this DumpStatus? dumpStatus) + => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.LongName; + + /// + /// Get the URL path part for a DumpStatus + /// + /// + /// + public static string? ShortName(this DumpStatus dumpStatus) + => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.ShortName; + + /// + /// Get the URL path part for a DumpStatus + /// + /// + /// + public static string? ShortName(this DumpStatus? dumpStatus) + => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.ShortName; + + /// + /// Get the Region enum value for a given string + /// + /// String value to convert + /// Region represented by the string, if possible + public static DumpStatus? ToDumpStatus(this string? dumpStatus) + { + // No value means no match + if (dumpStatus is null || dumpStatus.Length == 0) + return null; + + dumpStatus = dumpStatus.ToLowerInvariant(); + var dumpStatuses = (DumpStatus[])Enum.GetValues(typeof(DumpStatus)); + + // Check short names + int index = Array.FindIndex(dumpStatuses, s => dumpStatus == s.ShortName()?.ToLowerInvariant()); + if (index > -1) + return dumpStatuses[index]; + + // Check long names + index = Array.FindIndex(dumpStatuses, s => dumpStatus == s.LongName()?.ToLowerInvariant() + || dumpStatus == s.LongName()?.Replace(" ", string.Empty)?.ToLowerInvariant()); + if (index > -1) + return dumpStatuses[index]; + + // Check numeric values + if (int.TryParse(dumpStatus, out int dumpStatusInt) && Enum.IsDefined(typeof(DumpStatus), dumpStatusInt)) + return (DumpStatus)dumpStatusInt; + + return null; + } + + #endregion + #region Language /// diff --git a/SabreTools.RedumpLib/Data/Sections/DumpersAndStatusSection.cs b/SabreTools.RedumpLib/Data/Sections/DumpersAndStatusSection.cs index ee8133b..a08ff5e 100644 --- a/SabreTools.RedumpLib/Data/Sections/DumpersAndStatusSection.cs +++ b/SabreTools.RedumpLib/Data/Sections/DumpersAndStatusSection.cs @@ -1,6 +1,5 @@ using System; using Newtonsoft.Json; -using SabreTools.RedumpLib.RedumpOrg.Data; namespace SabreTools.RedumpLib.Data.Sections { diff --git a/SabreTools.RedumpLib/RedumpInfo/Client.cs b/SabreTools.RedumpLib/RedumpInfo/Client.cs index f1384f6..ae7bdbf 100644 --- a/SabreTools.RedumpLib/RedumpInfo/Client.cs +++ b/SabreTools.RedumpLib/RedumpInfo/Client.cs @@ -10,7 +10,6 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.RedumpInfo.Data; using SabreTools.RedumpLib.Web; using static SabreTools.RedumpLib.RedumpOrg.Data.Extensions; diff --git a/SabreTools.RedumpLib/RedumpInfo/Converters/PhysicalSystemConverter.cs b/SabreTools.RedumpLib/RedumpInfo/Converters/PhysicalSystemConverter.cs index 4cf58e1..dee4e9a 100644 --- a/SabreTools.RedumpLib/RedumpInfo/Converters/PhysicalSystemConverter.cs +++ b/SabreTools.RedumpLib/RedumpInfo/Converters/PhysicalSystemConverter.cs @@ -2,7 +2,6 @@ using System; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.RedumpInfo.Data; namespace SabreTools.RedumpLib.RedumpInfo.Converters { diff --git a/SabreTools.RedumpLib/RedumpInfo/Converters/RegionConverter.cs b/SabreTools.RedumpLib/RedumpInfo/Converters/RegionConverter.cs index 21a241b..6f90a0c 100644 --- a/SabreTools.RedumpLib/RedumpInfo/Converters/RegionConverter.cs +++ b/SabreTools.RedumpLib/RedumpInfo/Converters/RegionConverter.cs @@ -2,7 +2,6 @@ using System; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.RedumpInfo.Data; namespace SabreTools.RedumpLib.RedumpInfo.Converters { diff --git a/SabreTools.RedumpLib/RedumpInfo/Data/Enumerations.cs b/SabreTools.RedumpLib/RedumpInfo/Data/Enumerations.cs deleted file mode 100644 index 29e4dc6..0000000 --- a/SabreTools.RedumpLib/RedumpInfo/Data/Enumerations.cs +++ /dev/null @@ -1,27 +0,0 @@ -using SabreTools.RedumpLib.Attributes; - -namespace SabreTools.RedumpLib.RedumpInfo.Data -{ - /// - /// Dump status - /// - public enum DumpStatus - { - // TODO: Verify new naming - [HumanReadable(LongName = "Unknown", ShortName = "grey")] - UnknownGrey = 1, - - // TODO: Verify new naming - [HumanReadable(LongName = "Bad Dump", ShortName = "red")] - BadDumpRed = 2, - - [HumanReadable(LongName = "Questionable", ShortName = "yellow")] - Questionable, - - [HumanReadable(LongName = "Unverified", ShortName = "blue")] - Unverified, - - [HumanReadable(LongName = "Verified", ShortName = "green")] - Verified, - } -} diff --git a/SabreTools.RedumpLib/RedumpInfo/Data/Extensions.cs b/SabreTools.RedumpLib/RedumpInfo/Data/Extensions.cs deleted file mode 100644 index 6a0cded..0000000 --- a/SabreTools.RedumpLib/RedumpInfo/Data/Extensions.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using SabreTools.RedumpLib.Attributes; - -namespace SabreTools.RedumpLib.RedumpInfo.Data -{ - /// - /// Information pertaining to Redump systems - /// - public static class Extensions - { - #region Dump Status - - /// - /// Get the human readable name for a DumpStatus - /// - /// - /// - public static string? LongName(this DumpStatus dumpStatus) - => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.LongName; - - /// - /// Get the human readable name for a DumpStatus - /// - /// - /// - public static string? LongName(this DumpStatus? dumpStatus) - => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.LongName; - - /// - /// Get the URL path part for a DumpStatus - /// - /// - /// - public static string? ShortName(this DumpStatus dumpStatus) - => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.ShortName; - - /// - /// Get the URL path part for a DumpStatus - /// - /// - /// - public static string? ShortName(this DumpStatus? dumpStatus) - => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.ShortName; - - /// - /// Get the Region enum value for a given string - /// - /// String value to convert - /// Region represented by the string, if possible - public static DumpStatus? ToDumpStatus(this string? dumpStatus) - { - // No value means no match - if (dumpStatus is null || dumpStatus.Length == 0) - return null; - - dumpStatus = dumpStatus.ToLowerInvariant(); - var dumpStatuses = (DumpStatus[])Enum.GetValues(typeof(DumpStatus)); - - // Check short names - int index = Array.FindIndex(dumpStatuses, s => dumpStatus == s.ShortName()?.ToLowerInvariant()); - if (index > -1) - return dumpStatuses[index]; - - // Check long names - index = Array.FindIndex(dumpStatuses, s => dumpStatus == s.LongName()?.ToLowerInvariant() - || dumpStatus == s.LongName()?.Replace(" ", string.Empty)?.ToLowerInvariant()); - if (index > -1) - return dumpStatuses[index]; - - // Check numeric values - if (int.TryParse(dumpStatus, out int dumpStatusInt) && Enum.IsDefined(typeof(DumpStatus), dumpStatusInt)) - return (DumpStatus)dumpStatusInt; - - return null; - } - - #endregion - } -} diff --git a/SabreTools.RedumpLib/RedumpInfo/Discs.cs b/SabreTools.RedumpLib/RedumpInfo/Discs.cs index 79a1fb1..a96c6e2 100644 --- a/SabreTools.RedumpLib/RedumpInfo/Discs.cs +++ b/SabreTools.RedumpLib/RedumpInfo/Discs.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.RedumpInfo.Data; using SabreTools.RedumpLib.Web; namespace SabreTools.RedumpLib.RedumpInfo diff --git a/SabreTools.RedumpLib/RedumpInfo/UrlBuilder.cs b/SabreTools.RedumpLib/RedumpInfo/UrlBuilder.cs index e7c398b..56e49f3 100644 --- a/SabreTools.RedumpLib/RedumpInfo/UrlBuilder.cs +++ b/SabreTools.RedumpLib/RedumpInfo/UrlBuilder.cs @@ -1,7 +1,6 @@ using System; using System.Text; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.RedumpInfo.Data; using static SabreTools.RedumpLib.RedumpOrg.Data.Extensions; namespace SabreTools.RedumpLib.RedumpInfo @@ -227,7 +226,7 @@ namespace SabreTools.RedumpLib.RedumpInfo } // Status - if (status is not null && status >= DumpStatus.UnknownGrey && status <= DumpStatus.Verified) + if (status is not null && status >= DumpStatus.UnknownGrey && status <= DumpStatus.VerifiedGreen) sb.Append($"status={(int)status}&"); // System diff --git a/SabreTools.RedumpLib/RedumpOrg/Data/Enumerations.cs b/SabreTools.RedumpLib/RedumpOrg/Data/Enumerations.cs index 00b11d6..962d962 100644 --- a/SabreTools.RedumpLib/RedumpOrg/Data/Enumerations.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Data/Enumerations.cs @@ -2,27 +2,6 @@ using SabreTools.RedumpLib.Attributes; namespace SabreTools.RedumpLib.RedumpOrg.Data { - /// - /// Dump status - /// - public enum DumpStatus - { - [HumanReadable(LongName = "Unknown", ShortName = "grey")] - UnknownGrey = 1, - - [HumanReadable(LongName = "Bad Dump", ShortName = "red")] - BadDumpRed = 2, - - [HumanReadable(LongName = "Possible Bad Dump", ShortName = "yellow")] - PossibleBadDumpYellow = 3, - - [HumanReadable(LongName = "Original Media", ShortName = "blue")] - OriginalMediaBlue = 4, - - [HumanReadable(LongName = "Two or More", ShortName = "green")] - TwoOrMoreGreen = 5, - } - /// /// All possible language selections /// diff --git a/SabreTools.RedumpLib/RedumpOrg/Data/Extensions.cs b/SabreTools.RedumpLib/RedumpOrg/Data/Extensions.cs index 1540a05..7637263 100644 --- a/SabreTools.RedumpLib/RedumpOrg/Data/Extensions.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Data/Extensions.cs @@ -10,74 +10,6 @@ namespace SabreTools.RedumpLib.RedumpOrg.Data #pragma warning disable IDE0072 public static class Extensions { - #region Dump Status - - /// - /// Get the human readable name for a DumpStatus - /// - /// - /// - public static string? LongName(this DumpStatus dumpStatus) - => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.LongName; - - /// - /// Get the human readable name for a DumpStatus - /// - /// - /// - public static string? LongName(this DumpStatus? dumpStatus) - => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.LongName; - - /// - /// Get the URL path part for a DumpStatus - /// - /// - /// - public static string? ShortName(this DumpStatus dumpStatus) - => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.ShortName; - - /// - /// Get the URL path part for a DumpStatus - /// - /// - /// - public static string? ShortName(this DumpStatus? dumpStatus) - => AttributeHelper.GetHumanReadableAttribute(dumpStatus)?.ShortName; - - /// - /// Get the Region enum value for a given string - /// - /// String value to convert - /// Region represented by the string, if possible - public static DumpStatus? ToDumpStatus(this string? dumpStatus) - { - // No value means no match - if (dumpStatus is null || dumpStatus.Length == 0) - return null; - - dumpStatus = dumpStatus.ToLowerInvariant(); - var dumpStatuses = (DumpStatus[])Enum.GetValues(typeof(DumpStatus)); - - // Check short names - int index = Array.FindIndex(dumpStatuses, s => dumpStatus == s.ShortName()?.ToLowerInvariant()); - if (index > -1) - return dumpStatuses[index]; - - // Check long names - index = Array.FindIndex(dumpStatuses, s => dumpStatus == s.LongName()?.ToLowerInvariant() - || dumpStatus == s.LongName()?.Replace(" ", string.Empty)?.ToLowerInvariant()); - if (index > -1) - return dumpStatuses[index]; - - // Check numeric values - if (int.TryParse(dumpStatus, out int dumpStatusInt) && Enum.IsDefined(typeof(DumpStatus), dumpStatusInt)) - return (DumpStatus)dumpStatusInt; - - return null; - } - - #endregion - #region Language Selection /// diff --git a/SabreTools.RedumpLib/RedumpOrg/UrlBuilder.cs b/SabreTools.RedumpLib/RedumpOrg/UrlBuilder.cs index dd04cce..4c976eb 100644 --- a/SabreTools.RedumpLib/RedumpOrg/UrlBuilder.cs +++ b/SabreTools.RedumpLib/RedumpOrg/UrlBuilder.cs @@ -326,7 +326,7 @@ namespace SabreTools.RedumpLib.RedumpOrg } // Status - if (status is not null && status >= DumpStatus.UnknownGrey && status <= DumpStatus.TwoOrMoreGreen) + if (status is not null && status >= DumpStatus.UnknownGrey && status <= DumpStatus.VerifiedGreen) sb.Append($"status/{(int)status}/"); // System / Disc Type Search