Exemplo n.º 1
0
        public async Task <IActionResult> Post([FromBody] GraphQLParameter parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            var executionOptions = new ExecutionOptions
            {
                Schema        = _schema,
                Query         = parameter.Query,
                Inputs        = parameter.Variables.ToInputs(),
                OperationName = parameter.OperationName,
                UserContext   = new GraphQLUserContext {
                    User = User
                },
                ValidationRules = DocumentValidator.CoreRules().Concat(_validationRules).ToList()
            };

            executionOptions.Listeners.Add(_listener);

            var result = await _documentExecuter
                         .ExecuteAsync(executionOptions)
                         .ConfigureAwait(false);

            if (result.Errors?.Count > 0)
            {
                return(BadRequest(result.Errors));
            }

            return(Ok(result));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Post([FromBody] GraphQLParameter query)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }
            var inputs           = query.Variables.ToInputs();
            var executionOptions = new ExecutionOptions
            {
                Schema = _schema,
                Query  = query.Query,
                Inputs = inputs,
                ////UserContext = Request.Headers,
                ExposeExceptions = _utilityService.IsTrusted(),
                //UserContext = new GraphQLUserContext { Headers = Request.Headers }
                ThrowOnUnhandledException = true,
            };

            //executionOptions.Listeners.Add(_serviceProvider.GetRequiredService<DataLoaderDocumentListener>());

            var result = await _documentExecuter.ExecuteAsync(executionOptions).ConfigureAwait(false);

            //throw new Exception("Exception while fetching all the students from the storage.");

            if (result.Errors?.Count > 0)
            {
                return(BadRequest(result));
            }

            return(Ok(result));
        }
Exemplo n.º 3
0
        public async Task <string> ProcessAsync(GraphQLParameter query)
        {
            Inputs inputs = null;

            if (query.Variables != null)
            {
                var variables = query.Variables as JObject;
                var values    = GetValue(variables) as Dictionary <string, object>;
                inputs = new Inputs(values);
            }

            var queryToExecute = query.Query;
            var result         = await _executer.ExecuteAsync(_ =>
            {
                _.Schema                  = _schema;
                _.Query                   = queryToExecute;
                _.OperationName           = query.OperationName;
                _.Inputs                  = inputs;
                _.ComplexityConfiguration = new ComplexityConfiguration {
                    MaxDepth = 15
                };
            });

            return(_writer.Write(result));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Post([FromBody] GraphQLParameter query)
        {
            var executionOptions = new ExecutionOptions {
                Schema = _schema, Query = query.Query, UserContext = _repository
            };
            var result = await _documentExecuter.ExecuteAsync(executionOptions).ConfigureAwait(false);

            if (result.Errors?.Count > 0)
            {
                return(BadRequest(result.Errors));
            }
            return(Ok(result));
        }
        public async Task <IActionResult> GraphQLPostQuery([FromBody] GraphQLParameter query)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }
            //var inputs = query.Variables.ToInputs();
            var executionOptions = new ExecutionOptions
            {
                Schema = _schema,
                Query  = query.Query
            };
            var result = await _documentExecuter
                         .ExecuteAsync(executionOptions).ConfigureAwait(false);

            if (result.Errors?.Count > 0)
            {
                return(BadRequest(result.Errors));
            }

            return(Ok(result));
        }
        public async Task <IHttpActionResult> Query(CancellationToken cancellationToken)
        {
            string requestBody = await Request.Content.ReadAsStringAsync();

            GraphQLParameter parameters = JsonConvert.DeserializeObject <GraphQLParameter>(requestBody);

            if (parameters == null)
            {
                return(BadRequest());
            }

            var executionOptions = new ExecutionOptions
            {
                CancellationToken = cancellationToken,
                Schema            = _schema,
                OperationName     = parameters.OperationName,
                Query             = parameters.Query,
                Inputs            = parameters.Variables.ToInputs(),
                UserContext       = User,
#if DEBUG
                ExposeExceptions = true
#else
                ExposeExceptions = _permissionService.IsPermitted(User, SystemPermissions.DetailedErrorMessage)
#endif
            };

            var result = await _documentExecuter.ExecuteAsync(executionOptions);

            if (result.Errors?.Count > 0)
            {
                return(new NegotiatedContentResult <ExecutionResult>(HttpStatusCode.BadRequest, result, this));
            }

            return(Ok(result));
        }
    }
Exemplo n.º 7
0
 public async Task <object> PostAsync([FromBody] GraphQLParameter query)
 => await _processor.ProcessAsync(query);