private IReadOnlyList <HCError> ValidateQueryDocuments(ISchema schema) { var errors = new List <HCError>(); try { var serviceCollection = new ServiceCollection(); serviceCollection.AddValidation(); IDocumentValidator validator = serviceCollection.BuildServiceProvider() .GetService <IDocumentValidatorFactory>().CreateValidator(); foreach (DocumentInfo documentInfo in _queries.Values) { DocumentValidatorResult validationResult = validator.Validate(schema, documentInfo.Document); if (validationResult.HasErrors) { foreach (HCError error in validationResult.Errors) { errors.Add(HCErrorBuilder.FromError(error) .SetExtension("fileName", documentInfo.FileName) .SetExtension("document", documentInfo.Document) .Build()); } } } } catch (GeneratorException ex) { errors.AddRange(ex.Errors); } return(errors); }
private static bool TryValidateRequest( ISchema schema, IReadOnlyList <GraphQLFile> executableFiles, Dictionary <ISyntaxNode, string> fileLookup, List <IError> errors) { IDocumentValidator validator = CreateDocumentValidator(); DocumentNode document = MergeDocuments(executableFiles); DocumentValidatorResult validationResult = validator.Validate(schema, document); if (validationResult.HasErrors) { errors.AddRange( validationResult.Errors.Select( error => error.WithFileReference(fileLookup))); return(false); } return(true); }
public async ValueTask InvokeAsync(IRequestContext context) { if (context.Document is null) { context.Result = StateInvalidForDocumentValidation(); } else { using (_diagnosticEvents.ValidateDocument(context)) { context.ValidationResult = _documentValidator.Validate( context.Schema, context.Document, context.ContextData, context.ValidationResult is not null); } if (context.IsValidDocument) { await _next(context).ConfigureAwait(false); } else { DocumentValidatorResult validationResult = context.ValidationResult; context.Result = QueryResultBuilder.CreateError( validationResult.Errors, new Dictionary <string, object?> { { WellKnownContextData.ValidationErrors, true } }); _diagnosticEvents.ValidationErrors(context, validationResult.Errors); } } }