From 5dafcb02d462daa8a9eb5a89be08fd38b40e1d3d Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Tue, 27 Sep 2016 10:23:35 +0100 Subject: [PATCH] Redo options classes --- src/SharpCompress/Archives/Tar/TarArchive.cs | 2 +- src/SharpCompress/Common/OptionsBase.cs | 10 +++++++++ src/SharpCompress/Readers/ReaderOptions.cs | 7 +----- src/SharpCompress/Writers/Tar/TarWriter.cs | 2 +- .../Writers/Tar/TarWriterOptions.cs | 22 ------------------- src/SharpCompress/Writers/WriterFactory.cs | 2 +- src/SharpCompress/Writers/WriterOptions.cs | 12 ++-------- .../Writers/Zip/ZipWriterOptions.cs | 14 +++++------- 8 files changed, 21 insertions(+), 50 deletions(-) create mode 100644 src/SharpCompress/Common/OptionsBase.cs delete mode 100644 src/SharpCompress/Writers/Tar/TarWriterOptions.cs diff --git a/src/SharpCompress/Archives/Tar/TarArchive.cs b/src/SharpCompress/Archives/Tar/TarArchive.cs index b5d8a16a..8103938f 100644 --- a/src/SharpCompress/Archives/Tar/TarArchive.cs +++ b/src/SharpCompress/Archives/Tar/TarArchive.cs @@ -182,7 +182,7 @@ namespace SharpCompress.Archives.Tar IEnumerable oldEntries, IEnumerable newEntries) { - using (var writer = new TarWriter(stream, new TarWriterOptions(options))) + using (var writer = new TarWriter(stream, options)) { foreach (var entry in oldEntries.Concat(newEntries) .Where(x => !x.IsDirectory)) diff --git a/src/SharpCompress/Common/OptionsBase.cs b/src/SharpCompress/Common/OptionsBase.cs new file mode 100644 index 00000000..c46ba1bf --- /dev/null +++ b/src/SharpCompress/Common/OptionsBase.cs @@ -0,0 +1,10 @@ +namespace SharpCompress.Common +{ + public class OptionsBase + { + /// + /// SharpCompress will keep the supplied streams open. Default is true. + /// + public bool LeaveOpenStream { get; set; } = true; + } +} \ No newline at end of file diff --git a/src/SharpCompress/Readers/ReaderOptions.cs b/src/SharpCompress/Readers/ReaderOptions.cs index f7617c65..f7a4df30 100644 --- a/src/SharpCompress/Readers/ReaderOptions.cs +++ b/src/SharpCompress/Readers/ReaderOptions.cs @@ -2,13 +2,8 @@ namespace SharpCompress.Readers { - public class ReaderOptions + public class ReaderOptions : OptionsBase { - /// - /// SharpCompress will keep the supplied streams open. Default is true. - /// - public virtual bool LeaveOpenStream { get; set; } = true; - /// /// Look for RarArchive (Check for self-extracting archives or cases where RarArchive isn't at the start of the file) /// diff --git a/src/SharpCompress/Writers/Tar/TarWriter.cs b/src/SharpCompress/Writers/Tar/TarWriter.cs index 59344813..cf674521 100644 --- a/src/SharpCompress/Writers/Tar/TarWriter.cs +++ b/src/SharpCompress/Writers/Tar/TarWriter.cs @@ -10,7 +10,7 @@ namespace SharpCompress.Writers.Tar { public class TarWriter : AbstractWriter { - public TarWriter(Stream destination, TarWriterOptions options) + public TarWriter(Stream destination, WriterOptions options) : base(ArchiveType.Tar) { if (!destination.CanWrite) diff --git a/src/SharpCompress/Writers/Tar/TarWriterOptions.cs b/src/SharpCompress/Writers/Tar/TarWriterOptions.cs deleted file mode 100644 index 1ad1d077..00000000 --- a/src/SharpCompress/Writers/Tar/TarWriterOptions.cs +++ /dev/null @@ -1,22 +0,0 @@ -using SharpCompress.Common; - -namespace SharpCompress.Writers.Tar -{ - public class TarWriterOptions - { - public TarWriterOptions() - { - - } - - internal TarWriterOptions(WriterOptions readerOptions) - { - LeaveOpenStream = readerOptions.LeaveOpenStream; - CompressionType = readerOptions.CompressionType; - } - - public bool LeaveOpenStream { get; set; } - - public CompressionType CompressionType { get; set; } = CompressionType.Unknown; - } -} \ No newline at end of file diff --git a/src/SharpCompress/Writers/WriterFactory.cs b/src/SharpCompress/Writers/WriterFactory.cs index c558d16e..e80df526 100644 --- a/src/SharpCompress/Writers/WriterFactory.cs +++ b/src/SharpCompress/Writers/WriterFactory.cs @@ -27,7 +27,7 @@ namespace SharpCompress.Writers } case ArchiveType.Tar: { - return new TarWriter(stream, new TarWriterOptions(writerOptions)); + return new TarWriter(stream, writerOptions); } default: { diff --git a/src/SharpCompress/Writers/WriterOptions.cs b/src/SharpCompress/Writers/WriterOptions.cs index dcf8f338..f1ac39b7 100644 --- a/src/SharpCompress/Writers/WriterOptions.cs +++ b/src/SharpCompress/Writers/WriterOptions.cs @@ -3,21 +3,13 @@ using SharpCompress.Compressors.Deflate; namespace SharpCompress.Writers { - public class WriterOptions + public class WriterOptions : OptionsBase { public WriterOptions(CompressionType compressionType) { CompressionType = compressionType; } - public CompressionType CompressionType { get; set; } = CompressionType.Unknown; - - public bool LeaveOpenStream { get; set; } - - - /// - /// When CompressionType.Deflate is used, this property is referenced. Defaults to CompressionLevel.Default. - /// - public CompressionLevel DeflateCompressionLevel { get; set; } = CompressionLevel.Default; + public CompressionType CompressionType { get; set; } public static implicit operator WriterOptions(CompressionType compressionType) { diff --git a/src/SharpCompress/Writers/Zip/ZipWriterOptions.cs b/src/SharpCompress/Writers/Zip/ZipWriterOptions.cs index fa5d26d0..67d574ff 100644 --- a/src/SharpCompress/Writers/Zip/ZipWriterOptions.cs +++ b/src/SharpCompress/Writers/Zip/ZipWriterOptions.cs @@ -4,22 +4,18 @@ using SharpCompress.Compressors.Deflate; namespace SharpCompress.Writers.Zip { - public class ZipWriterOptions + public class ZipWriterOptions : WriterOptions { - public ZipWriterOptions() + public ZipWriterOptions(CompressionType compressionType) + : base(compressionType) { - } - + internal ZipWriterOptions(WriterOptions options) + : base(options.CompressionType) { LeaveOpenStream = options.LeaveOpenStream; - CompressionType = options.CompressionType; } - - public bool LeaveOpenStream { get; set; } - - public CompressionType CompressionType { get; set; } = CompressionType.Unknown; /// /// When CompressionType.Deflate is used, this property is referenced. Defaults to CompressionLevel.Default. ///