Class: Angus::ParamsValidator
- Inherits:
-
Object
- Object
- Angus::ParamsValidator
- 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
- #all_required_fields?(params) ⇒ Boolean
- #all_valid_types?(params) ⇒ Boolean
-
#initialize(operation) ⇒ ParamsValidator
constructor
A new instance of ParamsValidator.
- #valid?(params) ⇒ Boolean
- #valid_date?(field, param) ⇒ Boolean
- #valid_datetime?(field, param) ⇒ Boolean
- #valid_decimal?(field, param) ⇒ Boolean
- #valid_integer?(field, param) ⇒ Boolean
-
#valid_string?(field, param) ⇒ Boolean
String are all ways valid.
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
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
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
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
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
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
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
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
48 49 50 |
# File 'lib/angus/utils/params_validator.rb', line 48 def valid_string?(field, param) true end |