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(); } }
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)); }