Ejemplo n.º 1
0
        private async Task ExecuteAsync(HttpContext context)
        {
            var start = DateTime.UtcNow;

            var request = await _serializer.ReadAsync <GraphQLRequest>(context.Request.Body, context.RequestAborted).ConfigureAwait(false);

            var result = await _executer.ExecuteAsync(options =>
            {
                options.Schema            = _schema;
                options.Query             = request.Query;
                options.OperationName     = request.OperationName;
                options.Variables         = request.Variables;
                options.UserContext       = _settings.BuildUserContext?.Invoke(context);
                options.EnableMetrics     = _settings.EnableMetrics;
                options.RequestServices   = context.RequestServices;
                options.CancellationToken = context.RequestAborted;
            }).ConfigureAwait(false);

            if (_settings.EnableMetrics)
            {
                result.EnrichWithApolloTracing(start);
            }

            await WriteResponseAsync(context, result, context.RequestAborted).ConfigureAwait(false);
        }