public static async Task GetMetricsSample(HttpContext context, TimeSpan timeout, MetricType typeFilter) { var registry = context.RequestServices.GetRequiredService <IMetricsRegistry>(); var samples = registry.SelectMany(x => x.GetSample(typeFilter)).ToImmutableDictionary(); var cancel = new CancellationTokenSource(timeout); context.Response.StatusCode = 200; context.Response.Headers.Add(HeaderNames.ContentType, MediaTypeNames.Application.Json); await context.Response.WriteAsync(JsonSampleSerializer.Serialize(samples), cancel.Token); }
public async Task <IActionResult> GetAsync() { var timeout = TimeSpan.FromSeconds(_options.Value.SampleTimeoutSeconds); var cancel = new CancellationTokenSource(timeout); var samples = await Task.Run(() => _registry.SelectMany(x => x.GetSample()).ToImmutableDictionary(), cancel.Token); var json = JsonSampleSerializer.Serialize(samples); return(Ok(json)); }
public async Task Invoke(HttpContext context) { if (context.Request.Path == _middlewareOptions.Value.Path) { var registry = context.RequestServices.GetRequiredService <IMetricsRegistry>(); var samples = registry.SelectMany(x => x.GetSample(_options.Value.Filter)).ToImmutableDictionary(); var cancel = new CancellationTokenSource(_middlewareOptions.Value.Timeout); context.Response.StatusCode = 200; context.Response.Headers.Add(Constants.HttpHeaders.ContentType, Constants.MediaTypes.Json); await context.Response.WriteAsync(JsonSampleSerializer.Serialize(samples), cancel.Token); } else { await _next.Invoke(context); } }