/// <summary> /// Unpacks a set of archives into a given directory. /// </summary> protected void UnpackArchives(IEnumerable<string> archivesToUnpack, string unpackDirectory) { foreach (string archiveToUnpack in archivesToUnpack) { if (request.Target.IsDirectory) { // When the target is a nested archive, we need to unpack it to a subdirectory. unpackDirectory = Path.Combine(unpackDirectory, Path.GetFileNameWithoutExtension(archiveToUnpack)); } // Extract archive. var unzipStrategy = new UnzipStrategy(WhitelistPatterns, unzipNestedArchives: true); var unzipper = new LogsetUnzipper(unzipStrategy, request); UnzipResult result = unzipper.Unzip(archiveToUnpack, unpackDirectory, deleteOnFinish: request.Target.IsDirectory); // Update target size to include the size of the zip contents (but not the zip itself if it's a nested zip in a directory). request.Target.UncompressedSize += result.FullUncompressedSize; if (request.Target.IsDirectory) { request.Target.UncompressedSize -= result.CompressedSize; } }; }
public Unzipper(UnzipStrategy strategy) { Strategy = strategy; }
public LogsetUnzipper(UnzipStrategy unzipStrategy, LogsharkRequest request) : base(unzipStrategy) { this.request = request; }