예제 #1
0
        private async Task ProcessRequest(HttpListenerContext ctx)
        {
            var response = new MockHttpResponse(ctx.Response);

            try
            {
                var content = await ReadContentAsync(ctx);

                var request = new MockHttpRequest(ctx.Request, content, BaseAddress);

                var processor = _processors.FirstOrDefault(p => p.Match(request)) ?? NotImplementedProcessor;
                await processor.ProcessRequestAsync(request, response);

                await response.SendResponseAsync();
            }
            catch (Exception e)
            {
                ctx.Response.StatusCode  = (int)HttpStatusCode.InternalServerError;
                ctx.Response.ContentType = "text";
                var buffer = Encoding.UTF8.GetBytes(e.ToString());
                ctx.Response.ContentEncoding = Encoding.UTF8;
                ctx.Response.ContentLength64 = buffer.Length;
                ctx.Response.OutputStream.Write(buffer, 0, buffer.Length);
            }
            finally
            {
                response.Close();
            }
        }
예제 #2
0
        public void Does_process_Markdown_pages()
        {
            var markdownHandler = new MarkdownHandler("/AppData/NoTemplate/Static")
            {
                MarkdownFormat = markdownFormat,
            };
            var httpReq = new MockHttpRequest {
                QueryString = new NameValueCollection()
            };
            var httpRes = new MockHttpResponse();

            markdownHandler.ProcessRequest(httpReq, httpRes, "Static");

            var expectedHtml = markdownFormat.Transform(
                File.ReadAllText("~/AppData/NoTemplate/Static.md".MapProjectPath()));

            httpRes.Close();
            Assert.That(httpRes.Contents, Is.EqualTo(expectedHtml));
        }