Beispiel #1
0
        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"]
                              )
                          );
            }
        }
Beispiel #2
0
        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);
        }