public async Task LiteralPathsAreHandledCorrectly() { var capture = new PathCapture(); var builder = new WebHostBuilder() .ConfigureServices(svc => svc.AddTestServices()) .Configure(app => { app.UsePrometheus(capture); app.Run(async ctx => await ctx.Response.WriteAsync("Hello world")); }); using (var server = new TestServer(builder)) using (var client = server.CreateClient()) { await client.GetAsync("/test"); await client.GetAsync("/something_else"); } Assert.Equal("/test", capture.Paths[0]); Assert.Equal("/something_else", capture.Paths[1]); }
public async Task RoutingWithTemplatesHandledCorrectly() { var capture = new PathCapture(); var builder = new WebHostBuilder() .ConfigureServices(svc => svc.AddTestServices().AddRouting()) .Configure(app => { app.UsePrometheus(capture); var routes = new RouteBuilder(app); routes.MapGet("route1/{userid:int}", async ctx => await ctx.Response.WriteAsync("Hello world")); routes.MapGet("route2/{agentid:guid}", async ctx => await ctx.Response.WriteAsync("Hello world")); app.UseRouter(routes.Build()); }); using (var server = new TestServer(builder)) using (var client = server.CreateClient()) { await client.GetAsync("/route1/4"); await client.GetAsync($"/route2/{Guid.Empty}"); } Assert.Equal("/route1/{userid:int}", capture.Paths[0]); Assert.Equal("/route2/{agentid:guid}", capture.Paths[1]); }
public CaptureMiddleware(RequestDelegate next, HttpMetrics metrics, PathCapture pathCapture) : base(next, metrics) { this.pathCapture = pathCapture; }
public static IApplicationBuilder UsePrometheus(this IApplicationBuilder app, PathCapture capture) { return(app.UseMiddleware <CaptureMiddleware>(capture)); }