public override void Close() { bool isEncodedContent = HttpHeadersHelpers.IsEncodedContent(_response.Headers); if (!isEncodedContent) { byte[] cachedBytes = _cachedStream.ToArray(); int cachedByteCount = cachedBytes.Length; bool isMinified = false; if (_configuration.IsAllowableResponseSize(cachedByteCount)) { string content = _encoding.GetString(cachedBytes); IMarkupMinifier minifier = _minificationManager.CreateMinifier(); MarkupMinificationResult minificationResult = minifier.Minify(content, _currentUrl, _encoding, _minificationManager.GenerateStatistics); if (minificationResult.Errors.Count == 0) { if (_configuration.IsPoweredByHttpHeadersEnabled()) { _minificationManager.AppendPoweredByHttpHeader((key, value) => { _response.Headers[key] = value; }); } using (var writer = new StreamWriter(_originalStream, _encoding)) { writer.Write(minificationResult.MinifiedContent); } isMinified = true; } } if (!isMinified) { _cachedStream.Seek(0, SeekOrigin.Begin); _cachedStream.CopyTo(_originalStream); } } _cachedStream.Clear(); _originalStream.Close(); if (isEncodedContent) { throw new InvalidOperationException( string.Format( AspNetCommonStrings.MarkupMinificationIsNotApplicableToEncodedContent, _response.Headers["Content-Encoding"] ) ); } }
private Stream GetOutputStream() { if (_outputStreamInitializedFlag.Set()) { if (HttpHeadersHelpers.IsEncodedContent(_response.Headers)) { _outputStream = _originalStream; } else { _compressor = _compressionManager.CreateCompressor(_acceptEncoding); _outputStream = _compressor.Compress(_originalStream); } } return(_outputStream); }
private Stream GetOutputStream() { if (_outputStreamInitializedFlag.Set()) { if (!HttpHeadersHelpers.IsEncodedContent(_response.Headers) && _compressionManager.IsSupportedMediaType(_response.ContentType) && _compressionManager.TryCreateCompressor(_acceptEncoding, out _compressor)) { _outputStream = _compressor.Compress(_originalStream); } else { _outputStream = _originalStream; } } return(_outputStream); }