Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
            }
        }