예제 #1
0
        private string ProcessInputByPreBodyTagFilter(string inputToProcess, string htmlSnippet)
        {
            using (var memoryStream = new MemoryStream())
            {
                var preBodyTagFilter = new PreBodyTagFilter(htmlSnippet, memoryStream, Encoding.UTF8, this.loggerMock.Object);

                byte[] buffer = Encoding.UTF8.GetBytes(inputToProcess);
                preBodyTagFilter.Write(buffer, 0, buffer.Length);
                preBodyTagFilter.Flush();
                preBodyTagFilter.Position = 0;

                return(Encoding.UTF8.GetString(memoryStream.ToArray()));
            }
        }
        public void InjectHttpResponseBody(string htmlSnippet)
        {
            var capturedContent = new MemoryStream();

            this.context.Response.Contents(capturedContent);
            capturedContent.Seek(0, SeekOrigin.Begin);

            // TODO: UTF8?
            this.context.Response.Contents = s =>
            {
                using (var filter = new PreBodyTagFilter(htmlSnippet, s, Encoding.UTF8, this.logger))
                {
                    capturedContent.CopyTo(filter);
                    capturedContent.Dispose();
                }
            };
        }
예제 #3
0
        private void DoHaveLeftCompressedContentUntouched(string html, int bufferLength)
        {
            using (var htmlStream = new MemoryStream(Encoding.UTF8.GetBytes(html)))
                using (var compressedHtmlStream = new MemoryStream())
                    using (var outputStream = new MemoryStream())
                    {
                        using (var compresser = new GZipStream(compressedHtmlStream, CompressionMode.Compress, true))
                        {
                            htmlStream.CopyTo(compresser);
                        }

                        compressedHtmlStream.Position = 0;

                        var preBodyTagFilter = new PreBodyTagFilter("HTML SNIPPET", outputStream, Encoding.UTF8, "REQUEST URL", LoggerMock.Object);

                        compressedHtmlStream.Position = 0;
                        compressedHtmlStream.CopyTo(preBodyTagFilter, bufferLength);

                        preBodyTagFilter.Flush();
                        preBodyTagFilter.Position = 0;

                        //Assert.True(StreamEquals(compressedHtmlStream, outputStream));
                    }
        }
예제 #4
0
        private string ProcessInputByPreBodyTagFilter(string inputToProcess, string htmlSnippet, string requestUrl, int?chunkLastNumberOfCharacters)
        {
            using (var memoryStream = new MemoryStream())
            {
                var preBodyTagFilter = new PreBodyTagFilter(htmlSnippet, memoryStream, Encoding.UTF8, requestUrl, LoggerMock.Object);

                string[] inputsToProcess = { inputToProcess };
                if (chunkLastNumberOfCharacters.HasValue)
                {
                    inputsToProcess = new[] { inputToProcess.Substring(0, inputToProcess.Length - chunkLastNumberOfCharacters.Value), inputToProcess.Substring(inputToProcess.Length - chunkLastNumberOfCharacters.Value) };
                }

                foreach (string inputToProcessChunk in inputsToProcess)
                {
                    byte[] buffer = Encoding.UTF8.GetBytes(inputToProcessChunk);
                    preBodyTagFilter.Write(buffer, 0, buffer.Length);
                }

                preBodyTagFilter.Flush();
                preBodyTagFilter.Position = 0;

                return(Encoding.UTF8.GetString(memoryStream.ToArray()));
            }
        }