Class: AdsCommon::ParametersValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/ads_common/parameters_validator.rb

Constant Summary collapse

IGNORED_HASH_KEYS =

Savon special keys.

[:order!, :attributes!]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(registry) ⇒ ParametersValidator

Instance initializer.

Args:

- registry: a registry that defines service


37
38
39
40
# File 'lib/ads_common/parameters_validator.rb', line 37

def initialize(registry)
  @registry = registry
  @extra_namespaces = {}
end

Instance Attribute Details

#extra_namespacesObject (readonly)

We collect required namespaces into this hash during validation.



30
31
32
# File 'lib/ads_common/parameters_validator.rb', line 30

def extra_namespaces
  @extra_namespaces
end

Instance Method Details

#validate_args(action_name, args) ⇒ Object

Validates input parameters to:

  • add parameter names;

  • resolve xsi:type where required;

  • convert some native types to XML.



46
47
48
49
50
51
52
53
54
55
# File 'lib/ads_common/parameters_validator.rb', line 46

def validate_args(action_name, args)
  in_params = @registry.get_method_signature(action_name)[:input]
  # TODO: compare number of parameters.
  args_hash = in_params.each_with_index.inject({}) do
      |result, (in_param, index)|
    result.merge({in_param[:name] => deep_copy(args[index])})
  end
  validate_arguments(args_hash, in_params)
  return args_hash
end