Class: Despecable::Spectacles
- Inherits:
-
Object
- Object
- Despecable::Spectacles
- Defined in:
- lib/despecable/spectacles.rb
Instance Method Summary collapse
- #any(name, value, options) ⇒ Object
- #arrayable?(value) ⇒ Boolean
- #arrayify(value) ⇒ Object
- #boolean(name, value, options) ⇒ Object
- #date(name, value, options) ⇒ Object
- #datetime(name, value, options) ⇒ Object
- #expected_values_message(allowed_values) ⇒ Object
- #file(name, value, options) ⇒ Object
- #float(name, value, options) ⇒ Object
- #integer(name, value, options) ⇒ Object
- #read(name, value, type, options) ⇒ Object
- #string(name, value, options) ⇒ Object
- #validate_param(name, value, options) ⇒ Object
- #validate_param_presence(name, value) ⇒ Object
- #validate_param_value(name, value, options) ⇒ Object
- #validate_string_length(name, value, options) ⇒ Object
Instance Method Details
#any(name, value, options) ⇒ Object
110 111 112 |
# File 'lib/despecable/spectacles.rb', line 110 def any(name, value, ) value end |
#arrayable?(value) ⇒ Boolean
3 4 5 |
# File 'lib/despecable/spectacles.rb', line 3 def arrayable?(value) value.is_a?(::Array) || /,/ =~ value.to_s end |
#arrayify(value) ⇒ Object
7 8 9 10 |
# File 'lib/despecable/spectacles.rb', line 7 def arrayify(value) return value if value.is_a?(Array) value.to_s.split(",") end |
#boolean(name, value, options) ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/despecable/spectacles.rb', line 83 def boolean(name, value, ) case value.to_s when "true", "1" then true when "false", "0", nil then false else raise Despecable::InvalidParameterError.new("Boolean type (1/0 or true/false) required for parameter: '#{name}'", parameters: name) end end |
#date(name, value, options) ⇒ Object
91 92 93 94 95 96 |
# File 'lib/despecable/spectacles.rb', line 91 def date(name, value, ) Date.rfc3339(value + "T00:00:00+00:00") rescue ArgumentError raise unless $!. == "invalid date" raise Despecable::InvalidParameterError.new("Date type (e.g. '2012-12-31') required for parameter: '#{name}'", parameters: name) end |
#datetime(name, value, options) ⇒ Object
98 99 100 101 102 103 |
# File 'lib/despecable/spectacles.rb', line 98 def datetime(name, value, ) DateTime.rfc3339(value) rescue ArgumentError raise unless $!. == "invalid date" raise Despecable::InvalidParameterError.new("Rfc3339 datetime type (e.g. '2009-06-19T00:00:00-04:00') required for parameter: '#{name}'", parameters: name) end |
#expected_values_message(allowed_values) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/despecable/spectacles.rb', line 50 def (allowed_values) case allowed_values when Array msg = ": " + allowed_values.slice(0..99).join(", ") msg += ", ... [truncated]" if allowed_values.length > 100 return msg when Range " between #{allowed_values.first} and #{allowed_values.last}" else nil end end |
#file(name, value, options) ⇒ Object
105 106 107 108 |
# File 'lib/despecable/spectacles.rb', line 105 def file(name, value, ) raise Despecable::InvalidParameterError.new("File upload type required for parameter: '#{name}'" , parameters: name) if !(value.respond_to?(:original_filename) && value.original_filename.to_s.length > 0) return value end |
#float(name, value, options) ⇒ Object
70 71 72 73 74 75 |
# File 'lib/despecable/spectacles.rb', line 70 def float(name, value, ) Float(value) rescue ArgumentError raise unless /^invalid value for Float/ =~ $!. raise Despecable::InvalidParameterError.new("Float type required for parameter: '#{name}'", parameters: name) end |
#integer(name, value, options) ⇒ Object
63 64 65 66 67 68 |
# File 'lib/despecable/spectacles.rb', line 63 def integer(name, value, ) Integer(value) rescue ArgumentError raise unless /^invalid value for Integer/ =~ $!. raise Despecable::InvalidParameterError.new("Integer type required for parameter: '#{name}'", parameters: name) end |
#read(name, value, type, options) ⇒ Object
12 13 14 15 16 |
# File 'lib/despecable/spectacles.rb', line 12 def read(name, value, type, ) value = public_send(type, name, value, ) unless value.nil? validate_param(name, value, ) return value end |
#string(name, value, options) ⇒ Object
77 78 79 80 81 |
# File 'lib/despecable/spectacles.rb', line 77 def string(name, value, ) value = value.to_s #no-op validate_string_length(name, value, ) if .key?(:length) return value end |
#validate_param(name, value, options) ⇒ Object
18 19 20 21 |
# File 'lib/despecable/spectacles.rb', line 18 def validate_param(name, value, ) validate_param_presence(name, value) if [:required] validate_param_value(name, value, ) if .key?(:in) && !value.nil? end |
#validate_param_presence(name, value) ⇒ Object
23 24 25 |
# File 'lib/despecable/spectacles.rb', line 23 def validate_param_presence(name, value) raise Despecable::MissingParameterError.new("Missing required parameter: '#{name}'", parameters: name) if value.nil? end |
#validate_param_value(name, value, options) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/despecable/spectacles.rb', line 27 def validate_param_value(name, value, ) allowed_values = [:in] allowed_values = allowed_values.map{|x| x.is_a?(String) ? x.downcase : x} if [:case] == false value = value.downcase if [:case] == false && value.is_a?(String) if !allowed_values.include?(value) msg = "Unacceptable value for parameter: '#{name}'" = (allowed_values) msg += "; acceptable values are" + if !.nil? raise Despecable::IncorrectParameterError.new(msg, parameters: name) end end |
#validate_string_length(name, value, options) ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/despecable/spectacles.rb', line 39 def validate_string_length(name, value, ) allowed_lengths = [:length] allowed_lengths = [*allowed_lengths] unless allowed_lengths.is_a?(Range) if !allowed_lengths.include?(value.length) msg = "Unacceptable length for parameter: '#{name}'" = (allowed_lengths) msg += "; acceptable lengths are" + if !.nil? raise Despecable::IncorrectParameterError.new(msg, parameters: name) end end |