Class: Angus::ParamsValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/angus/utils/params_validator.rb

Constant Summary collapse

DEFAULT_DATE_FORMAT =
'%Y-%m-%d'
DEFAULT_DATETIME_FORMAT =
'%Y-%m-%dT%H:%M:%S%z'

Instance Method Summary collapse

Constructor Details

#initialize(operation) ⇒ ParamsValidator

Returns a new instance of ParamsValidator.



10
11
12
13
# File 'lib/angus/utils/params_validator.rb', line 10

def initialize(operation)
  @operation        = operation
  @request_elements = operation.request_elements
end

Instance Method Details

#all_required_fields?(params) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
23
24
25
26
27
28
# File 'lib/angus/utils/params_validator.rb', line 20

def all_required_fields?(params)
  required_fields = @request_elements.select(&:required)

  no_found_parameters = required_fields.select {|rf| !params.include?(rf.name.to_sym) }

  unless no_found_parameters.empty?
    raise RequiredParameterNotFound.new(no_found_parameters)
  end
end

#all_valid_types?(params) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/angus/utils/params_validator.rb', line 30

def all_valid_types?(params)
  @request_elements.each do |field|
    type = field.type
    method_name = "valid_#{type}?"

    if self.respond_to?(method_name)
      param = params[field.name.to_sym]

      valid = self.send(method_name, field, param)

      raise InvalidParameterType.new(field, param) unless valid
    else
      # TODO handle complex types
    end
  end
end

#valid?(params) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
# File 'lib/angus/utils/params_validator.rb', line 15

def valid?(params)
  all_required_fields?(params)
  all_valid_types?(params)
end

#valid_date?(field, param) ⇒ Boolean

Returns:

  • (Boolean)


60
61
62
63
64
65
66
67
68
# File 'lib/angus/utils/params_validator.rb', line 60

def valid_date?(field, param)
  begin
    Date.strptime(param, DEFAULT_DATE_FORMAT)

    true
  rescue ArgumentError
    false
  end
end

#valid_datetime?(field, param) ⇒ Boolean

Returns:

  • (Boolean)


70
71
72
73
74
75
76
77
78
# File 'lib/angus/utils/params_validator.rb', line 70

def valid_datetime?(field, param)
  begin
    DateTime.strptime(param, DEFAULT_DATETIME_FORMAT)

    true
  rescue ArgumentError
    false
  end
end

#valid_decimal?(field, param) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/angus/utils/params_validator.rb', line 56

def valid_decimal?(field, param)
  !!(param =~/^[-+]?([0-9]+(\.[0-9]+)?$)/)
end

#valid_integer?(field, param) ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/angus/utils/params_validator.rb', line 52

def valid_integer?(field, param)
  !!(param =~ /^[-+]?[0-9]+$/)
end

#valid_string?(field, param) ⇒ Boolean

String are all ways valid

Returns:

  • (Boolean)


48
49
50
# File 'lib/angus/utils/params_validator.rb', line 48

def valid_string?(field, param)
  true
end