Module: Eol::Resource::Sanitizer

Included in:
Eol::Resource
Defined in:
lib/eol/sanitizer.rb

Instance Method Summary collapse

Instance Method Details

#sanitizeObject

Parse the attributes for to post to the API



10
11
12
13
14
15
16
17
18
19
# File 'lib/eol/sanitizer.rb', line 10

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

rubocop:enable Metrics/CyclomaticComplexity rubocop:enable Metrics/PerceivedComplexity



41
42
43
# File 'lib/eol/sanitizer.rb', line 41

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

#sanitize_has_many(value) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/eol/sanitizer.rb', line 45

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

#sanitize_relationship(value) ⇒ Object

rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/PerceivedComplexity



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/eol/sanitizer.rb', line 23

def sanitize_relationship(value)
  if value.is_a?(Eol::Resource)
    value.id # Turn relation into ID
  elsif value.is_a?(Array)
    sanitize_has_many(value)
  elsif value.is_a?(Time) || value.is_a?(Date) || value.is_a?(DateTime)
    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")
    sanitize_date_time(Time.zone.at(number))
  else
    value
  end
end