public static IArgumentDescriptor Validate <T>( this IArgumentDescriptor argumentDescriptor, Func <T, bool> func) { Action <IDirectiveContext, FieldNode, string, object> validator = (d, n, a, o) => { bool isValid = false; if (o is T t) { isValid = func(t); } if (!isValid) { throw new QueryException(QueryError.CreateArgumentError( "Argument is not valid.", d.Path, n, a)); } }; return(argumentDescriptor.Directive( new ArgumentValidationDirective { Validator = validator })); }
private static void DeclareFieldArguments( IObjectFieldDescriptor fieldDescriptor, FieldDefinitionNode fieldDefinition) { foreach (InputValueDefinitionNode inputFieldDefinition in fieldDefinition.Arguments) { fieldDescriptor.Argument(inputFieldDefinition.Name.Value, a => { IArgumentDescriptor descriptor = a .Description( inputFieldDefinition.Description?.Value) .Type(inputFieldDefinition.Type) .DefaultValue(inputFieldDefinition.DefaultValue) .SyntaxNode(inputFieldDefinition); foreach (DirectiveNode directive in inputFieldDefinition.Directives) { descriptor.Directive(directive); } }); } }
public static IArgumentDescriptor Validate <T>( this IArgumentDescriptor argumentDescriptor, Func <T, bool> func) { Action <IDirectiveContext, FieldNode, string, object> validator = (d, n, a, o) => { bool isValid = false; if (o is T t) { isValid = func(t); } if (!isValid) { throw new QueryException( ErrorBuilder.New() .SetMessage("Argument is not valid.") .SetPath(d.Path) .AddLocation(n) .SetExtension("argument", a) .Build()); } }; return(argumentDescriptor.Directive( new ArgumentValidationDirective { Validator = validator })); }
public static IArgumentDescriptor Validate <T>( this IArgumentDescriptor argumentDescriptor, Func <T, bool> func) { Action <IDirective, FieldNode, object> validator = (d, n, o) => { bool isValid = false; if (o is T t) { isValid = func(t); } if (!isValid) { throw new QueryException(new ArgumentError( "Argument is not valid.", ((InputField)d.Source).Name, n)); } }; return(argumentDescriptor.Directive( new ArgumentValidationDirective { Validator = validator })); }
private static void DeclareArguments( IDirectiveTypeDescriptor typeDescriptor, DirectiveDefinitionNode node) { foreach (InputValueDefinitionNode inputField in node.Arguments) { IArgumentDescriptor descriptor = typeDescriptor .Argument(inputField.Name.Value) .Description(inputField.Description?.Value) .Type(inputField.Type) .DefaultValue(inputField.DefaultValue) .SyntaxNode(inputField); foreach (DirectiveNode directive in inputField.Directives) { descriptor.Directive(directive); } } }