| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 | using MediaBrowser.Model.IO;using SharpCompress.Archive.Rar;using SharpCompress.Archive.SevenZip;using SharpCompress.Archive.Tar;using SharpCompress.Common;using SharpCompress.Reader;using System.IO;namespace MediaBrowser.Common.Implementations.Archiving{    /// <summary>    /// Class DotNetZipClient    /// </summary>    public class ZipClient : IZipClient    {        /// <summary>        /// Extracts all.        /// </summary>        /// <param name="sourceFile">The source file.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAll(string sourceFile, string targetPath, bool overwriteExistingFiles)        {            using (var fileStream = File.OpenRead(sourceFile))            {                ExtractAll(fileStream, targetPath, overwriteExistingFiles);            }        }        /// <summary>        /// Extracts all.        /// </summary>        /// <param name="source">The source.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAll(Stream source, string targetPath, bool overwriteExistingFiles)        {            using (var reader = ReaderFactory.Open(source))            {                var options = ExtractOptions.ExtractFullPath;                if (overwriteExistingFiles)                {                    options = options | ExtractOptions.Overwrite;                }                reader.WriteAllToDirectory(targetPath, options);            }        }        /// <summary>        /// Extracts all from7z.        /// </summary>        /// <param name="sourceFile">The source file.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAllFrom7z(string sourceFile, string targetPath, bool overwriteExistingFiles)        {            using (var fileStream = File.OpenRead(sourceFile))            {                ExtractAllFrom7z(fileStream, targetPath, overwriteExistingFiles);            }        }        /// <summary>        /// Extracts all from7z.        /// </summary>        /// <param name="source">The source.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAllFrom7z(Stream source, string targetPath, bool overwriteExistingFiles)        {            using (var archive = SevenZipArchive.Open(source))            {                using (var reader = archive.ExtractAllEntries())                {                    var options = ExtractOptions.ExtractFullPath;                    if (overwriteExistingFiles)                    {                        options = options | ExtractOptions.Overwrite;                    }                    reader.WriteAllToDirectory(targetPath, options);                }            }        }        /// <summary>        /// Extracts all from tar.        /// </summary>        /// <param name="sourceFile">The source file.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAllFromTar(string sourceFile, string targetPath, bool overwriteExistingFiles)        {            using (var fileStream = File.OpenRead(sourceFile))            {                ExtractAllFromTar(fileStream, targetPath, overwriteExistingFiles);            }        }        /// <summary>        /// Extracts all from tar.        /// </summary>        /// <param name="source">The source.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAllFromTar(Stream source, string targetPath, bool overwriteExistingFiles)        {            using (var archive = TarArchive.Open(source))            {                using (var reader = archive.ExtractAllEntries())                {                    var options = ExtractOptions.ExtractFullPath;                    if (overwriteExistingFiles)                    {                        options = options | ExtractOptions.Overwrite;                    }                    reader.WriteAllToDirectory(targetPath, options);                }            }        }        /// <summary>        /// Extracts all from rar.        /// </summary>        /// <param name="sourceFile">The source file.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAllFromRar(string sourceFile, string targetPath, bool overwriteExistingFiles)        {            using (var fileStream = File.OpenRead(sourceFile))            {                ExtractAllFromRar(fileStream, targetPath, overwriteExistingFiles);            }        }        /// <summary>        /// Extracts all from rar.        /// </summary>        /// <param name="source">The source.</param>        /// <param name="targetPath">The target path.</param>        /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>        public void ExtractAllFromRar(Stream source, string targetPath, bool overwriteExistingFiles)        {            using (var archive = RarArchive.Open(source))            {                using (var reader = archive.ExtractAllEntries())                {                    var options = ExtractOptions.ExtractFullPath;                    if (overwriteExistingFiles)                    {                        options = options | ExtractOptions.Overwrite;                    }                    reader.WriteAllToDirectory(targetPath, options);                }            }        }    }}
 |