// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; namespace Benchmarks.Middleware { public class PlaintextMiddleware { private static readonly PathString _path = new PathString("/plaintext"); private static readonly byte[] _helloWorldPayload = Encoding.UTF8.GetBytes("Hello, World!"); private readonly RequestDelegate _next; public PlaintextMiddleware(RequestDelegate next) { _next = next; } public Task Invoke(HttpContext httpContext) { if (httpContext.Request.Path.StartsWithSegments(_path, StringComparison.Ordinal)) { return WriteResponse(httpContext.Response); } return _next(httpContext); } public static Task WriteResponse(HttpResponse response) { var payloadLength = _helloWorldPayload.Length; response.StatusCode = 200; response.ContentType = "text/plain"; response.ContentLength = payloadLength; return response.Body.WriteAsync(_helloWorldPayload, 0, payloadLength); } } public static class PlaintextMiddlewareExtensions { public static IApplicationBuilder UsePlainText(this IApplicationBuilder builder) { return builder.UseMiddleware(); } } }