Example #1
0
        private void ParseInternal(
            JsonDocument document,
            IOperationResultBuilder resultBuilder)
        {
            if (document.RootElement.TryGetProperty(
                    _data, out JsonElement data))
            {
                resultBuilder.SetData(ParseData(data));
            }

            if (document.RootElement.TryGetProperty(
                    _errors, out JsonElement errors))
            {
                resultBuilder.AddErrors(ParseErrors(errors));
            }

            if (TryParseExtensions(
                    document.RootElement,
                    out IReadOnlyDictionary <string, object?>?extensions))
            {
                resultBuilder.AddExtensions(extensions !);
            }

            if (!resultBuilder.IsDataOrErrorModified)
            {
                resultBuilder.AddError(ErrorBuilder.New()
                                       .SetMessage(
                                           "The specified document is not a valid " +
                                           "GraphQL response document. Ensure that either " +
                                           "`data` or `errors` os provided. The document " +
                                           "parses property names case-sensitive.")
                                       .SetCode(ErrorCodes.InvalidResponse)
                                       .Build());
            }
        }
        private async Task ParseInternalAsync(
            Stream stream,
            IOperationResultBuilder resultBuilder,
            CancellationToken cancellationToken)
        {
            using (JsonDocument document = await JsonDocument.ParseAsync(stream)
                                           .ConfigureAwait(false))
            {
                if (document.RootElement.TryGetProperty(
                        _data, out JsonElement data))
                {
                    resultBuilder.SetData(ParserData(data));
                }

                if (document.RootElement.TryGetProperty(
                        _errors, out JsonElement errors))
                {
                    resultBuilder.AddErrors(ParseErrors(errors));
                }

                if (TryParseExtensions(
                        document.RootElement,
                        out IReadOnlyDictionary <string, object?>?extensions))
                {
                    resultBuilder.AddExtensions(extensions !);
                }

                if (!resultBuilder.IsDataOrErrorModified)
                {
                    resultBuilder.AddError(ErrorBuilder.New()
                                           .SetMessage(
                                               "The specified document is not a valid " +
                                               "GraphQL response document. Ensure that either " +
                                               "`data` or `errors` os provided. The document " +
                                               "parses property names case-sensitive.")
                                           .SetCode(ErrorCodes.InvalidResponse)
                                           .Build());
                }
            }
        }