/// <summary> /// Archive files using plugin /// </summary> /// <param name="archivePluginName">Archive plugin name to use</param> /// <param name="archiveSection">Archive settings section</param> /// <param name="fileNames">File names to archive</param> /// <returns>Returns archive stream</returns> private Stream ArchiveFiles(string archivePluginName, IConfiguration archiveSection, IDictionary <string, string> fileNames) { _logger.Information($"Archiving files using '{archivePluginName}' archive plugin..."); // Archive files var archivePlugin = _pluginFactory.GetArchive(archivePluginName, archiveSection); var archiveStream = archivePlugin.Archive(fileNames); // Check if stream was created if (archiveStream == null) { throw new NullReferenceException("Archive stream cannot be null."); } // Set the pointer at beginning of the stream if (archiveStream.CanSeek) { archiveStream.Seek(0, SeekOrigin.Begin); } // Return archive stream return(archiveStream); }