Module: Elmas::Resource::Sanitizer

Included in:
Elmas::Resource
Defined in:
lib/elmas/sanitizer.rb

Instance Method Summary collapse

Instance Method Details

#sanitizeObject

Parse the attributes for to post to the API



8
9
10
11
12
13
14
15
16
17
# File 'lib/elmas/sanitizer.rb', line 8

def sanitize
  to_submit = {}
  @attributes.each do |key, value|
    next if key == :id || !valid_attribute?(key)
    key = Utils.parse_key(key)
    submit_value = sanitize_relationship(value)
    to_submit[key] = submit_value
  end
  to_submit
end

#sanitize_date_time(value) ⇒ Object



35
36
37
# File 'lib/elmas/sanitizer.rb', line 35

def sanitize_date_time(value)
  value.strftime("%Y-%m-%d")
end

#sanitize_has_many(value) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/elmas/sanitizer.rb', line 39

def sanitize_has_many(value)
  submit_value = []
  value.each do |e|
    submit_value << e.sanitize
  end
  submit_value
end

#sanitize_relationship(value) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/elmas/sanitizer.rb', line 19

def sanitize_relationship(value)
  if value.is_a?(Elmas::Resource)
    return value.id # Turn relation into ID
  elsif value.is_a?(Array)
    return sanitize_has_many(value)
  elsif value.is_a?(Time) || value.is_a?(Date) || value.is_a?(DateTime)
    return sanitize_date_time(value)
  elsif value.is_a?(String) && value.match(/(Date\()/)
    number = value.scan(/\d+/).first.to_i / 1000.0
    Time.zone = ActiveSupport::TimeZone.new("Europe/Amsterdam")
    return sanitize_date_time(Time.zone.at(number))
  else
    return value
  end
end