Ejemplo n.º 1
0
        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);
                    }
                });
            }
        }
Ejemplo n.º 3
0
        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
            }));
        }
Ejemplo n.º 5
0
        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);
                }
            }
        }