Class: Despecable::Spectacles
- Inherits:
-
Object
- Object
- Despecable::Spectacles
- Defined in:
- lib/despecable/spectacles.rb
Instance Method Summary collapse
- #any(name, value) ⇒ Object
- #arrayable?(value) ⇒ Boolean
- #arrayify(value) ⇒ Object
- #boolean(name, value) ⇒ Object
- #date(name, value) ⇒ Object
- #datetime(name, value) ⇒ Object
- #file(name, value) ⇒ Object
- #float(name, value) ⇒ Object
- #integer(name, value) ⇒ Object
- #read(name, value, type, options) ⇒ Object
- #string(name, value) ⇒ Object
- #validate_param(name, value, options) ⇒ Object
- #validate_param_presence(name, value) ⇒ Object
- #validate_param_value(name, value, allowed_values) ⇒ Object
Instance Method Details
#any(name, value) ⇒ Object
77 78 79 |
# File 'lib/despecable/spectacles.rb', line 77 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) ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/despecable/spectacles.rb', line 50 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) ⇒ Object
58 59 60 61 62 63 |
# File 'lib/despecable/spectacles.rb', line 58 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) ⇒ Object
65 66 67 68 69 70 |
# File 'lib/despecable/spectacles.rb', line 65 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 |
#file(name, value) ⇒ Object
72 73 74 75 |
# File 'lib/despecable/spectacles.rb', line 72 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.present?) return value end |
#float(name, value) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/despecable/spectacles.rb', line 38 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) ⇒ Object
31 32 33 34 35 36 |
# File 'lib/despecable/spectacles.rb', line 31 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) ⇒ Object
45 46 47 48 |
# File 'lib/despecable/spectacles.rb', line 45 def string(name, value) # This is really a no-op. value.to_s 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, [:in]) 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, allowed_values) ⇒ Object
27 28 29 |
# File 'lib/despecable/spectacles.rb', line 27 def validate_param_value(name, value, allowed_values) raise Despecable::IncorrectParameterError.new("Unacceptable value for parameter: '#{name}'", parameters: name) if !allowed_values.include?(value) end |