From d2710afc840977a55e911eab0b4a1f76e87f6c96 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 21 Jun 2026 22:27:20 -0400 Subject: [PATCH] Move old submission info, patch to tide over --- SabreTools.RedumpLib.Test/BuilderTests.cs | 3 +- .../Data/ExtensionsTests.cs | 7 +- .../RedumpInfo/FormatterTests.cs | 9 +- .../RedumpOrg/FormatterTests.cs | 10 +- .../SubmissionInfoTests.cs | 13 ++- SabreTools.RedumpLib/Builder.cs | 5 +- SabreTools.RedumpLib/Data/Extensions.cs | 3 +- SabreTools.RedumpLib/Data/SubmissionInfo.cs | 87 +-------------- SabreTools.RedumpLib/RedumpInfo/Formatter.cs | 11 +- SabreTools.RedumpLib/RedumpInfo/Validator.cs | 1 + SabreTools.RedumpLib/RedumpOrg/Formatter.cs | 2 +- .../Sections/CommonDiscInfoSection.cs | 3 +- .../Sections/CopyProtectionSection.cs | 3 +- .../Sections/DumpersAndStatusSection.cs | 3 +- .../Sections/DumpingInfoSection.cs | 2 +- .../Sections/EDCSection.cs | 3 +- .../Sections/ExtrasSection.cs | 2 +- .../ParentCloneRelationshipSection.cs | 2 +- .../Sections/SizeAndChecksumsSection.cs | 2 +- .../Sections/TracksAndWriteOffsetsSection.cs | 2 +- .../Sections/VersionAndEditionsSection.cs | 2 +- .../RedumpOrg/SubmissionInfo.cs | 105 ++++++++++++++++++ 22 files changed, 179 insertions(+), 101 deletions(-) rename SabreTools.RedumpLib/{Data => RedumpOrg}/Sections/CommonDiscInfoSection.cs (99%) rename SabreTools.RedumpLib/{Data => RedumpOrg}/Sections/CopyProtectionSection.cs (95%) rename SabreTools.RedumpLib/{Data => RedumpOrg}/Sections/DumpersAndStatusSection.cs (91%) rename SabreTools.RedumpLib/{Data => RedumpOrg}/Sections/DumpingInfoSection.cs (98%) rename SabreTools.RedumpLib/{Data => RedumpOrg}/Sections/EDCSection.cs (86%) rename SabreTools.RedumpLib/{Data => RedumpOrg}/Sections/ExtrasSection.cs (96%) rename SabreTools.RedumpLib/{Data => RedumpOrg}/Sections/ParentCloneRelationshipSection.cs (93%) rename SabreTools.RedumpLib/{Data => RedumpOrg}/Sections/SizeAndChecksumsSection.cs (95%) rename SabreTools.RedumpLib/{Data => RedumpOrg}/Sections/TracksAndWriteOffsetsSection.cs (96%) rename SabreTools.RedumpLib/{Data => RedumpOrg}/Sections/VersionAndEditionsSection.cs (95%) create mode 100644 SabreTools.RedumpLib/RedumpOrg/SubmissionInfo.cs diff --git a/SabreTools.RedumpLib.Test/BuilderTests.cs b/SabreTools.RedumpLib.Test/BuilderTests.cs index 3117f1a..7ba4ae9 100644 --- a/SabreTools.RedumpLib.Test/BuilderTests.cs +++ b/SabreTools.RedumpLib.Test/BuilderTests.cs @@ -1,10 +1,11 @@ using System; using System.IO; -using SabreTools.RedumpLib.Data; using Xunit; +using SubmissionInfo = SabreTools.RedumpLib.RedumpOrg.SubmissionInfo; namespace SabreTools.RedumpLib.Test { + // TODO: Remove all references to redump.org submission information public class BuilderTests { [Theory] diff --git a/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs b/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs index c3ae1d8..8708f2f 100644 --- a/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs +++ b/SabreTools.RedumpLib.Test/Data/ExtensionsTests.cs @@ -3,8 +3,11 @@ using System.Collections.Generic; using System.Data; using System.Linq; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.Data.Sections; using Xunit; +using CommonDiscInfoSection = SabreTools.RedumpLib.RedumpOrg.Sections.CommonDiscInfoSection; +using SizeAndChecksumsSection = SabreTools.RedumpLib.RedumpOrg.Sections.SizeAndChecksumsSection; +using SubmissionInfo = SabreTools.RedumpLib.RedumpOrg.SubmissionInfo; +using TracksAndWriteOffsetsSection = SabreTools.RedumpLib.RedumpOrg.Sections.TracksAndWriteOffsetsSection; namespace SabreTools.RedumpLib.Test.Data { @@ -12,7 +15,7 @@ namespace SabreTools.RedumpLib.Test.Data { #region Non-Enumerable -#region NormalizeDiscType + #region NormalizeDiscType [Fact] public void NormalizeDiscType_InvalidMedia_Untouched() diff --git a/SabreTools.RedumpLib.Test/RedumpInfo/FormatterTests.cs b/SabreTools.RedumpLib.Test/RedumpInfo/FormatterTests.cs index 155c9a4..1cbc4ee 100644 --- a/SabreTools.RedumpLib.Test/RedumpInfo/FormatterTests.cs +++ b/SabreTools.RedumpLib.Test/RedumpInfo/FormatterTests.cs @@ -3,9 +3,16 @@ using System.Collections.Generic; using System.Linq; using System.Text; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.Data.Sections; using SabreTools.RedumpLib.RedumpInfo; using Xunit; +using CommonDiscInfoSection = SabreTools.RedumpLib.RedumpOrg.Sections.CommonDiscInfoSection; +using CopyProtectionSection = SabreTools.RedumpLib.RedumpOrg.Sections.CopyProtectionSection; +using DumpingInfoSection = SabreTools.RedumpLib.RedumpOrg.Sections.DumpingInfoSection; +using EDCSection = SabreTools.RedumpLib.RedumpOrg.Sections.EDCSection; +using ExtrasSection = SabreTools.RedumpLib.RedumpOrg.Sections.ExtrasSection; +using SizeAndChecksumsSection = SabreTools.RedumpLib.RedumpOrg.Sections.SizeAndChecksumsSection; +using TracksAndWriteOffsetsSection = SabreTools.RedumpLib.RedumpOrg.Sections.TracksAndWriteOffsetsSection; +using VersionAndEditionsSection = SabreTools.RedumpLib.RedumpOrg.Sections.VersionAndEditionsSection; namespace SabreTools.RedumpLib.Test.RedumpInfo { diff --git a/SabreTools.RedumpLib.Test/RedumpOrg/FormatterTests.cs b/SabreTools.RedumpLib.Test/RedumpOrg/FormatterTests.cs index aea13c4..f97ea66 100644 --- a/SabreTools.RedumpLib.Test/RedumpOrg/FormatterTests.cs +++ b/SabreTools.RedumpLib.Test/RedumpOrg/FormatterTests.cs @@ -3,12 +3,20 @@ using System.Collections.Generic; using System.Linq; using System.Text; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.Data.Sections; using SabreTools.RedumpLib.RedumpOrg; using Xunit; +using CommonDiscInfoSection = SabreTools.RedumpLib.RedumpOrg.Sections.CommonDiscInfoSection; +using CopyProtectionSection = SabreTools.RedumpLib.RedumpOrg.Sections.CopyProtectionSection; +using DumpingInfoSection = SabreTools.RedumpLib.RedumpOrg.Sections.DumpingInfoSection; +using EDCSection = SabreTools.RedumpLib.RedumpOrg.Sections.EDCSection; +using ExtrasSection = SabreTools.RedumpLib.RedumpOrg.Sections.ExtrasSection; +using SizeAndChecksumsSection = SabreTools.RedumpLib.RedumpOrg.Sections.SizeAndChecksumsSection; +using TracksAndWriteOffsetsSection = SabreTools.RedumpLib.RedumpOrg.Sections.TracksAndWriteOffsetsSection; +using VersionAndEditionsSection = SabreTools.RedumpLib.RedumpOrg.Sections.VersionAndEditionsSection; namespace SabreTools.RedumpLib.Test.RedumpOrg { + // TODO: Remove all references to redump.org submission information public class FormatterTests { #region ProcessSpecialFields diff --git a/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs b/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs index 9246364..8559504 100644 --- a/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs +++ b/SabreTools.RedumpLib.Test/SubmissionInfoTests.cs @@ -2,11 +2,22 @@ using System.Collections.Generic; using Newtonsoft.Json; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.Data.Sections; using Xunit; +using CommonDiscInfoSection = SabreTools.RedumpLib.RedumpOrg.Sections.CommonDiscInfoSection; +using CopyProtectionSection = SabreTools.RedumpLib.RedumpOrg.Sections.CopyProtectionSection; +using DumpersAndStatusSection = SabreTools.RedumpLib.RedumpOrg.Sections.DumpersAndStatusSection; +using DumpingInfoSection = SabreTools.RedumpLib.RedumpOrg.Sections.DumpingInfoSection; +using EDCSection = SabreTools.RedumpLib.RedumpOrg.Sections.EDCSection; +using ExtrasSection = SabreTools.RedumpLib.RedumpOrg.Sections.ExtrasSection; +using ParentCloneRelationshipSection = SabreTools.RedumpLib.RedumpOrg.Sections.ParentCloneRelationshipSection; +using SizeAndChecksumsSection = SabreTools.RedumpLib.RedumpOrg.Sections.SizeAndChecksumsSection; +using SubmissionInfo = SabreTools.RedumpLib.RedumpOrg.SubmissionInfo; +using TracksAndWriteOffsetsSection = SabreTools.RedumpLib.RedumpOrg.Sections.TracksAndWriteOffsetsSection; +using VersionAndEditionsSection = SabreTools.RedumpLib.RedumpOrg.Sections.VersionAndEditionsSection; namespace SabreTools.RedumpLib.Test { + // TODO: Remove all references to redump.org submission information public class SubmissionInfoTests { [Fact] diff --git a/SabreTools.RedumpLib/Builder.cs b/SabreTools.RedumpLib/Builder.cs index cee0b97..2764177 100644 --- a/SabreTools.RedumpLib/Builder.cs +++ b/SabreTools.RedumpLib/Builder.cs @@ -10,10 +10,13 @@ using System.Threading.Tasks; using System.Xml; using Newtonsoft.Json; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.Data.Sections; +using CommonDiscInfoSection = SabreTools.RedumpLib.RedumpOrg.Sections.CommonDiscInfoSection; +using SubmissionInfo = SabreTools.RedumpLib.RedumpOrg.SubmissionInfo; +using VersionAndEditionsSection = SabreTools.RedumpLib.RedumpOrg.Sections.VersionAndEditionsSection; namespace SabreTools.RedumpLib { + // TODO: Remove all references to redump.org submission information public static class Builder { #region Creation diff --git a/SabreTools.RedumpLib/Data/Extensions.cs b/SabreTools.RedumpLib/Data/Extensions.cs index 955d3bd..675bf83 100644 --- a/SabreTools.RedumpLib/Data/Extensions.cs +++ b/SabreTools.RedumpLib/Data/Extensions.cs @@ -8,6 +8,7 @@ namespace SabreTools.RedumpLib.Data /// /// Information pertaining to Redump systems /// + /// TODO: Remove all references to redump.org submission information public static class Extensions { #region Non-Enumerable @@ -39,7 +40,7 @@ namespace SabreTools.RedumpLib.Data /// /// Existing SubmissionInfo object to fill /// Corrected disc type, if possible - public static void NormalizeDiscType(this SubmissionInfo info) + public static void NormalizeDiscType(this RedumpOrg.SubmissionInfo info) { // If we have nothing valid, do nothing if (info.CommonDiscInfo.Media is null || info.SizeAndChecksums == default) diff --git a/SabreTools.RedumpLib/Data/SubmissionInfo.cs b/SabreTools.RedumpLib/Data/SubmissionInfo.cs index ac46b57..39ffab5 100644 --- a/SabreTools.RedumpLib/Data/SubmissionInfo.cs +++ b/SabreTools.RedumpLib/Data/SubmissionInfo.cs @@ -1,101 +1,26 @@ using System; -using System.Collections.Generic; using Newtonsoft.Json; -using SabreTools.RedumpLib.Data.Sections; namespace SabreTools.RedumpLib.Data { + /// + /// redump.info submission page information + /// + /// TODO: Fill in specific details from redump.info + /// TODO: Copy in moderation-only sections, like public class SubmissionInfo : ICloneable { /// /// Version of the current schema /// [JsonProperty(PropertyName = "schema_version", DefaultValueHandling = DefaultValueHandling.Ignore)] - public int SchemaVersion { get; set; } = 3; - - /// - /// Fully matched Redump ID - /// - [JsonIgnore] - public int? FullyMatchedID { get; set; } - - /// - /// List of partially matched Redump IDs - /// - [JsonIgnore] - public List? PartiallyMatchedIDs { get; set; } - - /// - /// DateTime of when the disc was added - /// - [JsonIgnore] - public DateTime? Added { get; set; } - - /// - /// DateTime of when the disc was last modified - /// - [JsonIgnore] - public DateTime? LastModified { get; set; } - - [JsonProperty(PropertyName = "common_disc_info", DefaultValueHandling = DefaultValueHandling.Ignore)] - public CommonDiscInfoSection CommonDiscInfo { get; set; } = new CommonDiscInfoSection(); - - [JsonProperty(PropertyName = "versions_and_editions", DefaultValueHandling = DefaultValueHandling.Ignore)] - public VersionAndEditionsSection VersionAndEditions { get; set; } = new VersionAndEditionsSection(); - - [JsonProperty(PropertyName = "edc", DefaultValueHandling = DefaultValueHandling.Ignore)] - public EDCSection EDC { get; set; } = new EDCSection(); - - [JsonProperty(PropertyName = "parent_clone_relationship", DefaultValueHandling = DefaultValueHandling.Ignore)] - public ParentCloneRelationshipSection ParentCloneRelationship { get; set; } = new ParentCloneRelationshipSection(); - - [JsonProperty(PropertyName = "extras", DefaultValueHandling = DefaultValueHandling.Ignore)] - public ExtrasSection Extras { get; set; } = new ExtrasSection(); - - [JsonProperty(PropertyName = "copy_protection", DefaultValueHandling = DefaultValueHandling.Ignore)] - public CopyProtectionSection CopyProtection { get; set; } = new CopyProtectionSection(); - - [JsonProperty(PropertyName = "dumpers_and_status", DefaultValueHandling = DefaultValueHandling.Ignore)] - public DumpersAndStatusSection DumpersAndStatus { get; set; } = new DumpersAndStatusSection(); - - [JsonProperty(PropertyName = "tracks_and_write_offsets", DefaultValueHandling = DefaultValueHandling.Ignore)] - public TracksAndWriteOffsetsSection TracksAndWriteOffsets { get; set; } = new TracksAndWriteOffsetsSection(); - - [JsonProperty(PropertyName = "size_and_checksums", DefaultValueHandling = DefaultValueHandling.Ignore)] - public SizeAndChecksumsSection SizeAndChecksums { get; set; } = new SizeAndChecksumsSection(); - - [JsonProperty(PropertyName = "dumping_info", DefaultValueHandling = DefaultValueHandling.Ignore)] - public DumpingInfoSection DumpingInfo { get; set; } = new DumpingInfoSection(); - - [JsonProperty(PropertyName = "artifacts", DefaultValueHandling = DefaultValueHandling.Ignore)] - public Dictionary Artifacts { get; set; } = []; + public int SchemaVersion { get; set; } = 1; public object Clone() { - Dictionary artifacts = []; - foreach (var kvp in this.Artifacts) - { - artifacts[kvp.Key] = kvp.Value; - } - return new SubmissionInfo { SchemaVersion = this.SchemaVersion, - FullyMatchedID = this.FullyMatchedID, - PartiallyMatchedIDs = this.PartiallyMatchedIDs, - Added = this.Added, - LastModified = this.LastModified, - CommonDiscInfo = this.CommonDiscInfo?.Clone() as CommonDiscInfoSection ?? new CommonDiscInfoSection(), - VersionAndEditions = this.VersionAndEditions?.Clone() as VersionAndEditionsSection ?? new VersionAndEditionsSection(), - EDC = this.EDC?.Clone() as EDCSection ?? new EDCSection(), - ParentCloneRelationship = this.ParentCloneRelationship?.Clone() as ParentCloneRelationshipSection ?? new ParentCloneRelationshipSection(), - Extras = this.Extras?.Clone() as ExtrasSection ?? new ExtrasSection(), - CopyProtection = this.CopyProtection?.Clone() as CopyProtectionSection ?? new CopyProtectionSection(), - DumpersAndStatus = this.DumpersAndStatus?.Clone() as DumpersAndStatusSection ?? new DumpersAndStatusSection(), - TracksAndWriteOffsets = this.TracksAndWriteOffsets?.Clone() as TracksAndWriteOffsetsSection ?? new TracksAndWriteOffsetsSection(), - SizeAndChecksums = this.SizeAndChecksums?.Clone() as SizeAndChecksumsSection ?? new SizeAndChecksumsSection(), - DumpingInfo = this.DumpingInfo?.Clone() as DumpingInfoSection ?? new DumpingInfoSection(), - Artifacts = artifacts, }; } } diff --git a/SabreTools.RedumpLib/RedumpInfo/Formatter.cs b/SabreTools.RedumpLib/RedumpInfo/Formatter.cs index 96d33d7..6fba3ed 100644 --- a/SabreTools.RedumpLib/RedumpInfo/Formatter.cs +++ b/SabreTools.RedumpLib/RedumpInfo/Formatter.cs @@ -3,10 +3,19 @@ using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.Data.Sections; +using CommonDiscInfoSection = SabreTools.RedumpLib.RedumpOrg.Sections.CommonDiscInfoSection; +using CopyProtectionSection = SabreTools.RedumpLib.RedumpOrg.Sections.CopyProtectionSection; +using DumpingInfoSection = SabreTools.RedumpLib.RedumpOrg.Sections.DumpingInfoSection; +using EDCSection = SabreTools.RedumpLib.RedumpOrg.Sections.EDCSection; +using ExtrasSection = SabreTools.RedumpLib.RedumpOrg.Sections.ExtrasSection; +using SizeAndChecksumsSection = SabreTools.RedumpLib.RedumpOrg.Sections.SizeAndChecksumsSection; +using SubmissionInfo = SabreTools.RedumpLib.RedumpOrg.SubmissionInfo; +using TracksAndWriteOffsetsSection = SabreTools.RedumpLib.RedumpOrg.Sections.TracksAndWriteOffsetsSection; +using VersionAndEditionsSection = SabreTools.RedumpLib.RedumpOrg.Sections.VersionAndEditionsSection; namespace SabreTools.RedumpLib.RedumpInfo { + // TODO: Remove all references to redump.org submission information public static class Formatter { /// diff --git a/SabreTools.RedumpLib/RedumpInfo/Validator.cs b/SabreTools.RedumpLib/RedumpInfo/Validator.cs index 3053387..e9b114f 100644 --- a/SabreTools.RedumpLib/RedumpInfo/Validator.cs +++ b/SabreTools.RedumpLib/RedumpInfo/Validator.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using SabreTools.RedumpLib.Data; +using SubmissionInfo = SabreTools.RedumpLib.RedumpOrg.SubmissionInfo; namespace SabreTools.RedumpLib.RedumpInfo { diff --git a/SabreTools.RedumpLib/RedumpOrg/Formatter.cs b/SabreTools.RedumpLib/RedumpOrg/Formatter.cs index 5a1d84b..bf46792 100644 --- a/SabreTools.RedumpLib/RedumpOrg/Formatter.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Formatter.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; using SabreTools.RedumpLib.Data; -using SabreTools.RedumpLib.Data.Sections; +using SabreTools.RedumpLib.RedumpOrg.Sections; namespace SabreTools.RedumpLib.RedumpOrg { diff --git a/SabreTools.RedumpLib/Data/Sections/CommonDiscInfoSection.cs b/SabreTools.RedumpLib/RedumpOrg/Sections/CommonDiscInfoSection.cs similarity index 99% rename from SabreTools.RedumpLib/Data/Sections/CommonDiscInfoSection.cs rename to SabreTools.RedumpLib/RedumpOrg/Sections/CommonDiscInfoSection.cs index 092876f..0dfa9b9 100644 --- a/SabreTools.RedumpLib/Data/Sections/CommonDiscInfoSection.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Sections/CommonDiscInfoSection.cs @@ -2,9 +2,10 @@ using System; using System.Collections.Generic; using Newtonsoft.Json; using SabreTools.RedumpLib.Converters; +using SabreTools.RedumpLib.Data; using SabreTools.RedumpLib.RedumpOrg.Converters; -namespace SabreTools.RedumpLib.Data.Sections +namespace SabreTools.RedumpLib.RedumpOrg.Sections { /// /// Common disc info section of New Disc Form diff --git a/SabreTools.RedumpLib/Data/Sections/CopyProtectionSection.cs b/SabreTools.RedumpLib/RedumpOrg/Sections/CopyProtectionSection.cs similarity index 95% rename from SabreTools.RedumpLib/Data/Sections/CopyProtectionSection.cs rename to SabreTools.RedumpLib/RedumpOrg/Sections/CopyProtectionSection.cs index b08ee90..65e8a4b 100644 --- a/SabreTools.RedumpLib/Data/Sections/CopyProtectionSection.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Sections/CopyProtectionSection.cs @@ -2,8 +2,9 @@ using System; using System.Collections.Generic; using Newtonsoft.Json; using SabreTools.RedumpLib.Converters; +using SabreTools.RedumpLib.Data; -namespace SabreTools.RedumpLib.Data.Sections +namespace SabreTools.RedumpLib.RedumpOrg.Sections { /// /// Copy protection section of New Disc form diff --git a/SabreTools.RedumpLib/Data/Sections/DumpersAndStatusSection.cs b/SabreTools.RedumpLib/RedumpOrg/Sections/DumpersAndStatusSection.cs similarity index 91% rename from SabreTools.RedumpLib/Data/Sections/DumpersAndStatusSection.cs rename to SabreTools.RedumpLib/RedumpOrg/Sections/DumpersAndStatusSection.cs index a08ff5e..3ecbd12 100644 --- a/SabreTools.RedumpLib/Data/Sections/DumpersAndStatusSection.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Sections/DumpersAndStatusSection.cs @@ -1,7 +1,8 @@ using System; using Newtonsoft.Json; +using SabreTools.RedumpLib.Data; -namespace SabreTools.RedumpLib.Data.Sections +namespace SabreTools.RedumpLib.RedumpOrg.Sections { /// /// Dumpers and status section of New Disc form (Moderator only) diff --git a/SabreTools.RedumpLib/Data/Sections/DumpingInfoSection.cs b/SabreTools.RedumpLib/RedumpOrg/Sections/DumpingInfoSection.cs similarity index 98% rename from SabreTools.RedumpLib/Data/Sections/DumpingInfoSection.cs rename to SabreTools.RedumpLib/RedumpOrg/Sections/DumpingInfoSection.cs index ee57cb8..95047a1 100644 --- a/SabreTools.RedumpLib/Data/Sections/DumpingInfoSection.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Sections/DumpingInfoSection.cs @@ -1,7 +1,7 @@ using System; using Newtonsoft.Json; -namespace SabreTools.RedumpLib.Data.Sections +namespace SabreTools.RedumpLib.RedumpOrg.Sections { /// /// Dumping info section for moderation diff --git a/SabreTools.RedumpLib/Data/Sections/EDCSection.cs b/SabreTools.RedumpLib/RedumpOrg/Sections/EDCSection.cs similarity index 86% rename from SabreTools.RedumpLib/Data/Sections/EDCSection.cs rename to SabreTools.RedumpLib/RedumpOrg/Sections/EDCSection.cs index 43261bf..6d1ddfe 100644 --- a/SabreTools.RedumpLib/Data/Sections/EDCSection.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Sections/EDCSection.cs @@ -1,8 +1,9 @@ using System; using Newtonsoft.Json; using SabreTools.RedumpLib.Converters; +using SabreTools.RedumpLib.Data; -namespace SabreTools.RedumpLib.Data.Sections +namespace SabreTools.RedumpLib.RedumpOrg.Sections { /// /// EDC section of New Disc form (PSX only) diff --git a/SabreTools.RedumpLib/Data/Sections/ExtrasSection.cs b/SabreTools.RedumpLib/RedumpOrg/Sections/ExtrasSection.cs similarity index 96% rename from SabreTools.RedumpLib/Data/Sections/ExtrasSection.cs rename to SabreTools.RedumpLib/RedumpOrg/Sections/ExtrasSection.cs index ce68aac..8f9c0d3 100644 --- a/SabreTools.RedumpLib/Data/Sections/ExtrasSection.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Sections/ExtrasSection.cs @@ -1,7 +1,7 @@ using System; using Newtonsoft.Json; -namespace SabreTools.RedumpLib.Data.Sections +namespace SabreTools.RedumpLib.RedumpOrg.Sections { /// /// Extras section of New Disc form diff --git a/SabreTools.RedumpLib/Data/Sections/ParentCloneRelationshipSection.cs b/SabreTools.RedumpLib/RedumpOrg/Sections/ParentCloneRelationshipSection.cs similarity index 93% rename from SabreTools.RedumpLib/Data/Sections/ParentCloneRelationshipSection.cs rename to SabreTools.RedumpLib/RedumpOrg/Sections/ParentCloneRelationshipSection.cs index 538fa2d..1eae56f 100644 --- a/SabreTools.RedumpLib/Data/Sections/ParentCloneRelationshipSection.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Sections/ParentCloneRelationshipSection.cs @@ -1,7 +1,7 @@ using System; using Newtonsoft.Json; -namespace SabreTools.RedumpLib.Data.Sections +namespace SabreTools.RedumpLib.RedumpOrg.Sections { /// /// Parent/Clone relationship section of New Disc form diff --git a/SabreTools.RedumpLib/Data/Sections/SizeAndChecksumsSection.cs b/SabreTools.RedumpLib/RedumpOrg/Sections/SizeAndChecksumsSection.cs similarity index 95% rename from SabreTools.RedumpLib/Data/Sections/SizeAndChecksumsSection.cs rename to SabreTools.RedumpLib/RedumpOrg/Sections/SizeAndChecksumsSection.cs index 69f91ee..9f2bb0f 100644 --- a/SabreTools.RedumpLib/Data/Sections/SizeAndChecksumsSection.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Sections/SizeAndChecksumsSection.cs @@ -1,7 +1,7 @@ using System; using Newtonsoft.Json; -namespace SabreTools.RedumpLib.Data.Sections +namespace SabreTools.RedumpLib.RedumpOrg.Sections { /// /// Size & checksums section of New Disc form (DVD/BD/UMD-based) diff --git a/SabreTools.RedumpLib/Data/Sections/TracksAndWriteOffsetsSection.cs b/SabreTools.RedumpLib/RedumpOrg/Sections/TracksAndWriteOffsetsSection.cs similarity index 96% rename from SabreTools.RedumpLib/Data/Sections/TracksAndWriteOffsetsSection.cs rename to SabreTools.RedumpLib/RedumpOrg/Sections/TracksAndWriteOffsetsSection.cs index ada5730..036cab0 100644 --- a/SabreTools.RedumpLib/Data/Sections/TracksAndWriteOffsetsSection.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Sections/TracksAndWriteOffsetsSection.cs @@ -1,7 +1,7 @@ using System; using Newtonsoft.Json; -namespace SabreTools.RedumpLib.Data.Sections +namespace SabreTools.RedumpLib.RedumpOrg.Sections { /// /// Tracks and write offsets section of New Disc form (CD/GD-based) diff --git a/SabreTools.RedumpLib/Data/Sections/VersionAndEditionsSection.cs b/SabreTools.RedumpLib/RedumpOrg/Sections/VersionAndEditionsSection.cs similarity index 95% rename from SabreTools.RedumpLib/Data/Sections/VersionAndEditionsSection.cs rename to SabreTools.RedumpLib/RedumpOrg/Sections/VersionAndEditionsSection.cs index c498a7e..b4ab595 100644 --- a/SabreTools.RedumpLib/Data/Sections/VersionAndEditionsSection.cs +++ b/SabreTools.RedumpLib/RedumpOrg/Sections/VersionAndEditionsSection.cs @@ -1,7 +1,7 @@ using System; using Newtonsoft.Json; -namespace SabreTools.RedumpLib.Data.Sections +namespace SabreTools.RedumpLib.RedumpOrg.Sections { /// /// Version and editions section of New Disc form diff --git a/SabreTools.RedumpLib/RedumpOrg/SubmissionInfo.cs b/SabreTools.RedumpLib/RedumpOrg/SubmissionInfo.cs new file mode 100644 index 0000000..275b97f --- /dev/null +++ b/SabreTools.RedumpLib/RedumpOrg/SubmissionInfo.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json; +using SabreTools.RedumpLib.RedumpOrg.Sections; + +namespace SabreTools.RedumpLib.RedumpOrg +{ + /// + /// redump.org submission page information + /// + public class SubmissionInfo : ICloneable + { + /// + /// Version of the current schema + /// + [JsonProperty(PropertyName = "schema_version", DefaultValueHandling = DefaultValueHandling.Ignore)] + public int SchemaVersion { get; set; } = 3; + + /// + /// Fully matched Redump ID + /// + [JsonIgnore] + public int? FullyMatchedID { get; set; } + + /// + /// List of partially matched Redump IDs + /// + [JsonIgnore] + public List? PartiallyMatchedIDs { get; set; } + + /// + /// DateTime of when the disc was added + /// + [JsonIgnore] + public DateTime? Added { get; set; } + + /// + /// DateTime of when the disc was last modified + /// + [JsonIgnore] + public DateTime? LastModified { get; set; } + + [JsonProperty(PropertyName = "common_disc_info", DefaultValueHandling = DefaultValueHandling.Ignore)] + public CommonDiscInfoSection CommonDiscInfo { get; set; } = new CommonDiscInfoSection(); + + [JsonProperty(PropertyName = "versions_and_editions", DefaultValueHandling = DefaultValueHandling.Ignore)] + public VersionAndEditionsSection VersionAndEditions { get; set; } = new VersionAndEditionsSection(); + + [JsonProperty(PropertyName = "edc", DefaultValueHandling = DefaultValueHandling.Ignore)] + public EDCSection EDC { get; set; } = new EDCSection(); + + [JsonProperty(PropertyName = "parent_clone_relationship", DefaultValueHandling = DefaultValueHandling.Ignore)] + public ParentCloneRelationshipSection ParentCloneRelationship { get; set; } = new ParentCloneRelationshipSection(); + + [JsonProperty(PropertyName = "extras", DefaultValueHandling = DefaultValueHandling.Ignore)] + public ExtrasSection Extras { get; set; } = new ExtrasSection(); + + [JsonProperty(PropertyName = "copy_protection", DefaultValueHandling = DefaultValueHandling.Ignore)] + public CopyProtectionSection CopyProtection { get; set; } = new CopyProtectionSection(); + + [JsonProperty(PropertyName = "dumpers_and_status", DefaultValueHandling = DefaultValueHandling.Ignore)] + public DumpersAndStatusSection DumpersAndStatus { get; set; } = new DumpersAndStatusSection(); + + [JsonProperty(PropertyName = "tracks_and_write_offsets", DefaultValueHandling = DefaultValueHandling.Ignore)] + public TracksAndWriteOffsetsSection TracksAndWriteOffsets { get; set; } = new TracksAndWriteOffsetsSection(); + + [JsonProperty(PropertyName = "size_and_checksums", DefaultValueHandling = DefaultValueHandling.Ignore)] + public SizeAndChecksumsSection SizeAndChecksums { get; set; } = new SizeAndChecksumsSection(); + + [JsonProperty(PropertyName = "dumping_info", DefaultValueHandling = DefaultValueHandling.Ignore)] + public DumpingInfoSection DumpingInfo { get; set; } = new DumpingInfoSection(); + + [JsonProperty(PropertyName = "artifacts", DefaultValueHandling = DefaultValueHandling.Ignore)] + public Dictionary Artifacts { get; set; } = []; + + public object Clone() + { + Dictionary artifacts = []; + foreach (var kvp in this.Artifacts) + { + artifacts[kvp.Key] = kvp.Value; + } + + return new SubmissionInfo + { + SchemaVersion = this.SchemaVersion, + FullyMatchedID = this.FullyMatchedID, + PartiallyMatchedIDs = this.PartiallyMatchedIDs, + Added = this.Added, + LastModified = this.LastModified, + CommonDiscInfo = this.CommonDiscInfo?.Clone() as CommonDiscInfoSection ?? new CommonDiscInfoSection(), + VersionAndEditions = this.VersionAndEditions?.Clone() as VersionAndEditionsSection ?? new VersionAndEditionsSection(), + EDC = this.EDC?.Clone() as EDCSection ?? new EDCSection(), + ParentCloneRelationship = this.ParentCloneRelationship?.Clone() as ParentCloneRelationshipSection ?? new ParentCloneRelationshipSection(), + Extras = this.Extras?.Clone() as ExtrasSection ?? new ExtrasSection(), + CopyProtection = this.CopyProtection?.Clone() as CopyProtectionSection ?? new CopyProtectionSection(), + DumpersAndStatus = this.DumpersAndStatus?.Clone() as DumpersAndStatusSection ?? new DumpersAndStatusSection(), + TracksAndWriteOffsets = this.TracksAndWriteOffsets?.Clone() as TracksAndWriteOffsetsSection ?? new TracksAndWriteOffsetsSection(), + SizeAndChecksums = this.SizeAndChecksums?.Clone() as SizeAndChecksumsSection ?? new SizeAndChecksumsSection(), + DumpingInfo = this.DumpingInfo?.Clone() as DumpingInfoSection ?? new DumpingInfoSection(), + Artifacts = artifacts, + }; + } + } +}