Expose Rar support

This commit is contained in:
Mark Linton 2013-11-10 10:11:42 -08:00
parent 90e75c05b7
commit 0bf016d0ff
2 changed files with 55 additions and 0 deletions

View File

@ -1,4 +1,5 @@
using MediaBrowser.Model.IO; using MediaBrowser.Model.IO;
using SharpCompress.Archive.Rar;
using SharpCompress.Archive.SevenZip; using SharpCompress.Archive.SevenZip;
using SharpCompress.Archive.Tar; using SharpCompress.Archive.Tar;
using SharpCompress.Common; using SharpCompress.Common;
@ -123,5 +124,43 @@ namespace MediaBrowser.Common.Implementations.Archiving
} }
} }
} }
/// <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);
}
}
}
} }
} }

View File

@ -54,5 +54,21 @@ namespace MediaBrowser.Model.IO
/// <param name="targetPath">The target path.</param> /// <param name="targetPath">The target path.</param>
/// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param> /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param>
void ExtractAllFromTar(Stream source, string targetPath, bool overwriteExistingFiles); void ExtractAllFromTar(Stream source, string targetPath, bool overwriteExistingFiles);
/// <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>
void ExtractAllFromRar(string sourceFile, string targetPath, bool 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>
void ExtractAllFromRar(Stream source, string targetPath, bool overwriteExistingFiles);
} }
} }