diff --git a/src/SharpCompress/Writers/GZip/GZipWriter.Factory.cs b/src/SharpCompress/Writers/GZip/GZipWriter.Factory.cs index 01e6edb5..fa7ea1c5 100644 --- a/src/SharpCompress/Writers/GZip/GZipWriter.Factory.cs +++ b/src/SharpCompress/Writers/GZip/GZipWriter.Factory.cs @@ -4,39 +4,42 @@ using SharpCompress.Common; namespace SharpCompress.Writers.GZip; -public partial class GZipWriter : IWriterOpenable +public partial class GZipWriter : IWriterOpenable { - public static IWriter OpenWriter(string filePath, GZipWriterOptions writerOptions) + public static IGZipWriter OpenWriter(string filePath, GZipWriterOptions writerOptions) { filePath.NotNullOrEmpty(nameof(filePath)); return OpenWriter(new FileInfo(filePath), writerOptions); } - public static IWriter OpenWriter(FileInfo fileInfo, GZipWriterOptions writerOptions) + public static IGZipWriter OpenWriter(FileInfo fileInfo, GZipWriterOptions writerOptions) { fileInfo.NotNull(nameof(fileInfo)); return new GZipWriter(fileInfo.OpenWrite(), writerOptions); } - public static IWriter OpenWriter(Stream stream, GZipWriterOptions writerOptions) + public static IGZipWriter OpenWriter(Stream stream, GZipWriterOptions writerOptions) { stream.NotNull(nameof(stream)); return new GZipWriter(stream, writerOptions); } - public static IAsyncWriter OpenAsyncWriter(string stream, GZipWriterOptions writerOptions) + public static IGZipAsyncWriter OpenAsyncWriter(string filePath, GZipWriterOptions writerOptions) { - return (IAsyncWriter)OpenWriter(stream, writerOptions); + return (IGZipAsyncWriter)OpenWriter(filePath, writerOptions); } - public static IAsyncWriter OpenAsyncWriter(Stream stream, GZipWriterOptions writerOptions) + public static IGZipAsyncWriter OpenAsyncWriter(Stream stream, GZipWriterOptions writerOptions) { - return (IAsyncWriter)OpenWriter(stream, writerOptions); + return (IGZipAsyncWriter)OpenWriter(stream, writerOptions); } - public static IAsyncWriter OpenAsyncWriter(FileInfo fileInfo, GZipWriterOptions writerOptions) + public static IGZipAsyncWriter OpenAsyncWriter( + FileInfo fileInfo, + GZipWriterOptions writerOptions + ) { - return (IAsyncWriter)OpenWriter(fileInfo, writerOptions); + return (IGZipAsyncWriter)OpenWriter(fileInfo, writerOptions); } } #endif diff --git a/src/SharpCompress/Writers/GZip/GZipWriter.cs b/src/SharpCompress/Writers/GZip/GZipWriter.cs index eebac616..42aafef3 100644 --- a/src/SharpCompress/Writers/GZip/GZipWriter.cs +++ b/src/SharpCompress/Writers/GZip/GZipWriter.cs @@ -7,7 +7,7 @@ using SharpCompress.IO; namespace SharpCompress.Writers.GZip; -public sealed partial class GZipWriter : AbstractWriter +public sealed partial class GZipWriter : AbstractWriter, IGZipWriter, IGZipAsyncWriter { private bool _wroteToStream; diff --git a/src/SharpCompress/Writers/GZip/IGZipWriter.cs b/src/SharpCompress/Writers/GZip/IGZipWriter.cs new file mode 100644 index 00000000..c99ebe58 --- /dev/null +++ b/src/SharpCompress/Writers/GZip/IGZipWriter.cs @@ -0,0 +1,13 @@ +using SharpCompress.Writers; + +namespace SharpCompress.Writers.GZip; + +/// +/// Writer for GZip archives. +/// +public interface IGZipWriter : IWriter { } + +/// +/// Async writer for GZip archives. +/// +public interface IGZipAsyncWriter : IAsyncWriter { } diff --git a/src/SharpCompress/Writers/IWriterOpenable.cs b/src/SharpCompress/Writers/IWriterOpenable.cs index 828b0b7c..399ecd14 100644 --- a/src/SharpCompress/Writers/IWriterOpenable.cs +++ b/src/SharpCompress/Writers/IWriterOpenable.cs @@ -5,13 +5,15 @@ using SharpCompress.Common.Options; namespace SharpCompress.Writers; -public interface IWriterOpenable +public interface IWriterOpenable + where TWriter : IWriter + where TAsyncWriter : IAsyncWriter where TWriterOptions : IWriterOptions { - public static abstract IWriter OpenWriter(string filePath, TWriterOptions writerOptions); + public static abstract TWriter OpenWriter(string filePath, TWriterOptions writerOptions); - public static abstract IWriter OpenWriter(FileInfo fileInfo, TWriterOptions writerOptions); - public static abstract IWriter OpenWriter(Stream stream, TWriterOptions writerOptions); + public static abstract TWriter OpenWriter(FileInfo fileInfo, TWriterOptions writerOptions); + public static abstract TWriter OpenWriter(Stream stream, TWriterOptions writerOptions); /// /// Opens a Writer asynchronously. @@ -20,17 +22,17 @@ public interface IWriterOpenable /// The archive type. /// Writer options. /// A task that returns an IWriter. - public static abstract IAsyncWriter OpenAsyncWriter( + public static abstract TAsyncWriter OpenAsyncWriter( Stream stream, TWriterOptions writerOptions ); - public static abstract IAsyncWriter OpenAsyncWriter( + public static abstract TAsyncWriter OpenAsyncWriter( string filePath, TWriterOptions writerOptions ); - public static abstract IAsyncWriter OpenAsyncWriter( + public static abstract TAsyncWriter OpenAsyncWriter( FileInfo fileInfo, TWriterOptions writerOptions ); diff --git a/src/SharpCompress/Writers/Tar/ITarWriter.cs b/src/SharpCompress/Writers/Tar/ITarWriter.cs new file mode 100644 index 00000000..3983f2f0 --- /dev/null +++ b/src/SharpCompress/Writers/Tar/ITarWriter.cs @@ -0,0 +1,13 @@ +using SharpCompress.Writers; + +namespace SharpCompress.Writers.Tar; + +/// +/// Writer for TAR archives. +/// +public interface ITarWriter : IWriter { } + +/// +/// Async writer for TAR archives. +/// +public interface ITarAsyncWriter : IAsyncWriter { } diff --git a/src/SharpCompress/Writers/Tar/TarWriter.Factory.cs b/src/SharpCompress/Writers/Tar/TarWriter.Factory.cs index a3c6bf6f..0915829e 100644 --- a/src/SharpCompress/Writers/Tar/TarWriter.Factory.cs +++ b/src/SharpCompress/Writers/Tar/TarWriter.Factory.cs @@ -4,39 +4,39 @@ using SharpCompress.Common; namespace SharpCompress.Writers.Tar; -public partial class TarWriter : IWriterOpenable +public partial class TarWriter : IWriterOpenable { - public static IWriter OpenWriter(string filePath, TarWriterOptions writerOptions) + public static ITarWriter OpenWriter(string filePath, TarWriterOptions writerOptions) { filePath.NotNullOrEmpty(nameof(filePath)); return OpenWriter(new FileInfo(filePath), writerOptions); } - public static IWriter OpenWriter(FileInfo fileInfo, TarWriterOptions writerOptions) + public static ITarWriter OpenWriter(FileInfo fileInfo, TarWriterOptions writerOptions) { fileInfo.NotNull(nameof(fileInfo)); return new TarWriter(fileInfo.OpenWrite(), writerOptions); } - public static IWriter OpenWriter(Stream stream, TarWriterOptions writerOptions) + public static ITarWriter OpenWriter(Stream stream, TarWriterOptions writerOptions) { stream.NotNull(nameof(stream)); return new TarWriter(stream, writerOptions); } - public static IAsyncWriter OpenAsyncWriter(string stream, TarWriterOptions writerOptions) + public static ITarAsyncWriter OpenAsyncWriter(string filePath, TarWriterOptions writerOptions) { - return (IAsyncWriter)OpenWriter(stream, writerOptions); + return (ITarAsyncWriter)OpenWriter(filePath, writerOptions); } - public static IAsyncWriter OpenAsyncWriter(Stream stream, TarWriterOptions writerOptions) + public static ITarAsyncWriter OpenAsyncWriter(Stream stream, TarWriterOptions writerOptions) { - return (IAsyncWriter)OpenWriter(stream, writerOptions); + return (ITarAsyncWriter)OpenWriter(stream, writerOptions); } - public static IAsyncWriter OpenAsyncWriter(FileInfo fileInfo, TarWriterOptions writerOptions) + public static ITarAsyncWriter OpenAsyncWriter(FileInfo fileInfo, TarWriterOptions writerOptions) { - return (IAsyncWriter)OpenWriter(fileInfo, writerOptions); + return (ITarAsyncWriter)OpenWriter(fileInfo, writerOptions); } } #endif diff --git a/src/SharpCompress/Writers/Tar/TarWriter.cs b/src/SharpCompress/Writers/Tar/TarWriter.cs index 12775903..df8a061a 100644 --- a/src/SharpCompress/Writers/Tar/TarWriter.cs +++ b/src/SharpCompress/Writers/Tar/TarWriter.cs @@ -10,7 +10,7 @@ using SharpCompress.Providers; namespace SharpCompress.Writers.Tar; -public partial class TarWriter : AbstractWriter +public partial class TarWriter : AbstractWriter, ITarWriter, ITarAsyncWriter { private readonly bool finalizeArchiveOnClose; private TarHeaderWriteFormat headerFormat; diff --git a/src/SharpCompress/Writers/Zip/IZipWriter.cs b/src/SharpCompress/Writers/Zip/IZipWriter.cs new file mode 100644 index 00000000..920f6e65 --- /dev/null +++ b/src/SharpCompress/Writers/Zip/IZipWriter.cs @@ -0,0 +1,13 @@ +using SharpCompress.Writers; + +namespace SharpCompress.Writers.Zip; + +/// +/// Writer for ZIP archives. +/// +public interface IZipWriter : IWriter { } + +/// +/// Async writer for ZIP archives. +/// +public interface IZipAsyncWriter : IAsyncWriter { } diff --git a/src/SharpCompress/Writers/Zip/ZipWriter.Factory.cs b/src/SharpCompress/Writers/Zip/ZipWriter.Factory.cs index d21ab7e2..e31b8d6b 100644 --- a/src/SharpCompress/Writers/Zip/ZipWriter.Factory.cs +++ b/src/SharpCompress/Writers/Zip/ZipWriter.Factory.cs @@ -4,39 +4,39 @@ using SharpCompress.Common; namespace SharpCompress.Writers.Zip; -public partial class ZipWriter : IWriterOpenable +public partial class ZipWriter : IWriterOpenable { - public static IWriter OpenWriter(string filePath, ZipWriterOptions writerOptions) + public static IZipWriter OpenWriter(string filePath, ZipWriterOptions writerOptions) { filePath.NotNullOrEmpty(nameof(filePath)); return OpenWriter(new FileInfo(filePath), writerOptions); } - public static IWriter OpenWriter(FileInfo fileInfo, ZipWriterOptions writerOptions) + public static IZipWriter OpenWriter(FileInfo fileInfo, ZipWriterOptions writerOptions) { fileInfo.NotNull(nameof(fileInfo)); return new ZipWriter(fileInfo.OpenWrite(), writerOptions); } - public static IWriter OpenWriter(Stream stream, ZipWriterOptions writerOptions) + public static IZipWriter OpenWriter(Stream stream, ZipWriterOptions writerOptions) { stream.NotNull(nameof(stream)); return new ZipWriter(stream, writerOptions); } - public static IAsyncWriter OpenAsyncWriter(string stream, ZipWriterOptions writerOptions) + public static IZipAsyncWriter OpenAsyncWriter(string filePath, ZipWriterOptions writerOptions) { - return (IAsyncWriter)OpenWriter(stream, writerOptions); + return (IZipAsyncWriter)OpenWriter(filePath, writerOptions); } - public static IAsyncWriter OpenAsyncWriter(Stream stream, ZipWriterOptions writerOptions) + public static IZipAsyncWriter OpenAsyncWriter(Stream stream, ZipWriterOptions writerOptions) { - return (IAsyncWriter)OpenWriter(stream, writerOptions); + return (IZipAsyncWriter)OpenWriter(stream, writerOptions); } - public static IAsyncWriter OpenAsyncWriter(FileInfo fileInfo, ZipWriterOptions writerOptions) + public static IZipAsyncWriter OpenAsyncWriter(FileInfo fileInfo, ZipWriterOptions writerOptions) { - return (IAsyncWriter)OpenWriter(fileInfo, writerOptions); + return (IZipAsyncWriter)OpenWriter(fileInfo, writerOptions); } } #endif diff --git a/src/SharpCompress/Writers/Zip/ZipWriter.cs b/src/SharpCompress/Writers/Zip/ZipWriter.cs index 6056e190..fff070dc 100644 --- a/src/SharpCompress/Writers/Zip/ZipWriter.cs +++ b/src/SharpCompress/Writers/Zip/ZipWriter.cs @@ -20,7 +20,7 @@ using Constants = SharpCompress.Common.Constants; namespace SharpCompress.Writers.Zip; -public partial class ZipWriter : AbstractWriter +public partial class ZipWriter : AbstractWriter, IZipWriter, IZipAsyncWriter { private readonly CompressionType compressionType; private readonly int compressionLevel;