Class: Despecable::Spectacles

Inherits:
Object
  • Object
show all
Defined in:
lib/despecable/spectacles.rb

Instance Method Summary collapse

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

Returns:

  • (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 $!.message == "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 $!.message == "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/ =~ $!.message
  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/ =~ $!.message
  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, options)
  value = public_send(type, name, value) unless value.nil?
  validate_param(name, value, options)
  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, options)
  validate_param_presence(name, value) if options[:required]
  validate_param_value(name, value, options[:in]) if options.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