예제 #1
0
        /// <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);
        }