Sha256: 96e173909855cc293211be5a36fca5de3e7c20b2e04130ab39872a444f0f1b2c

Contents?: true

Size: 1.21 KB

Versions: 8

Compression:

Stored size: 1.21 KB

Contents

# Implement validate_node
class GraphQL::StaticValidation::ArgumentsValidator
  include GraphQL::StaticValidation::Message::MessageHelper

  def validate(context)
    visitor = context.visitor
    visitor[GraphQL::Language::Nodes::Argument] << -> (node, parent) {
      if parent.is_a?(GraphQL::Language::Nodes::InputObject)
        arg_defn = context.argument_definition
        if arg_defn.nil?
          return
        else
          parent_defn = arg_defn.type.unwrap
          if parent_defn.is_a?(GraphQL::ScalarType)
            return
          end
        end
      elsif context.skip_field?(parent.name)
        return
      elsif parent.is_a?(GraphQL::Language::Nodes::Directive)
        parent_defn = context.schema.directives[parent.name]
      else
        parent_defn = context.field_definition
      end
      validate_node(parent, node, parent_defn, context)
    }
  end

  private

  def parent_name(parent, type_defn)
    field_name = if parent.is_a?(GraphQL::Language::Nodes::Field)
      parent.alias || parent.name
    elsif parent.is_a?(GraphQL::Language::Nodes::InputObject)
      type_defn.name
    else
      parent.name
    end
  end

  def node_type(parent)
    parent.class.name.split("::").last
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
graphql-0.12.1 lib/graphql/static_validation/arguments_validator.rb
graphql-0.12.0 lib/graphql/static_validation/arguments_validator.rb
graphql-0.11.1 lib/graphql/static_validation/arguments_validator.rb
graphql-0.11.0 lib/graphql/static_validation/arguments_validator.rb
graphql-0.10.9 lib/graphql/static_validation/arguments_validator.rb
graphql-0.10.8 lib/graphql/static_validation/arguments_validator.rb
graphql-0.10.7 lib/graphql/static_validation/arguments_validator.rb
graphql-0.10.6 lib/graphql/static_validation/arguments_validator.rb