module Eol::Resource::Sanitizer

Public Instance Methods

sanitize() click to toggle source

Parse the attributes for to post to the API

# 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) click to toggle source

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

# File lib/eol/sanitizer.rb, line 41
def sanitize_date_time(value)
  value.strftime("%Y-%m-%d")
end
sanitize_has_many(value) click to toggle source
# 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) click to toggle source

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

# 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