示例#1
0
        private string UnzipIfNeeded(string originalUrl, string file)
        {
            var ext = Path.GetExtension(originalUrl.Split('?')[0]);

            if (string.Equals(ext, ".gz", StringComparison.OrdinalIgnoreCase))
            {
                using (var stream = _fileSystem.OpenRead(file))
                {
                    var tempFolder = Path.Combine(_config.ApplicationPaths.TempDirectory, Guid.NewGuid().ToString());
                    _fileSystem.CreateDirectory(tempFolder);

                    try
                    {
                        _zipClient.ExtractAllFromGz(stream, tempFolder, true);
                    }
                    catch
                    {
                        // If the extraction fails just return the original file, it could be a gz
                        return(file);
                    }

                    return(_fileSystem.GetFiles(tempFolder, true)
                           .Where(i => string.Equals(i.Extension, ".xml", StringComparison.OrdinalIgnoreCase))
                           .Select(i => i.FullName)
                           .FirstOrDefault());
                }
            }

            return(file);
        }
示例#2
0
        private string ExtractGz(string file)
        {
            using (var stream = File.OpenRead(file))
            {
                string tempFolder = Path.Combine(_config.ApplicationPaths.TempDirectory, Guid.NewGuid().ToString());
                Directory.CreateDirectory(tempFolder);

                _zipClient.ExtractAllFromGz(stream, tempFolder, true);

                return(tempFolder);
            }
        }
示例#3
0
        private string ExtractGz(string file)
        {
            using (var stream = File.OpenRead(file))
            {
                string tempFolder = GetTempFolderPath(stream);
                Directory.CreateDirectory(tempFolder);

                _zipClient.ExtractAllFromGz(stream, tempFolder, true);

                return(tempFolder);
            }
        }