class ConnectClient::Event

Attributes

data[R]

Public Class Methods

new(data) click to toggle source
# File lib/connect_client/event.rb, line 12
def initialize(data)
  event_data_defaults = { id: SecureRandom.uuid, timestamp: Time.now }
  @data = map_iso_dates event_data_defaults.merge(data)
  validate
end

Public Instance Methods

to_json(options = nil) click to toggle source
# File lib/connect_client/event.rb, line 24
def to_json(options = nil)
  @data.to_json
end
to_s() click to toggle source
# File lib/connect_client/event.rb, line 28
def to_s
  "Event Data: #{@data}"
end
validate() click to toggle source
# File lib/connect_client/event.rb, line 18
def validate
  invalid_properties = @data.keys.grep(@@RESERVED_PROPERTY_REGEX)

  raise EventDataValidationError.new(invalid_properties) if invalid_properties.any?
end

Private Instance Methods

map_iso_dates(data) click to toggle source
# File lib/connect_client/event.rb, line 34
def map_iso_dates(data)
  utc_converter = lambda { |value|
    value_to_convert = value
    map_utc = lambda { |value_item| utc_converter.call(value_item) }

    return value_to_convert.map(&map_utc) if value_to_convert.respond_to? :map

    value_to_convert = value_to_convert.to_time if value_to_convert.is_a?(DateTime) || value_to_convert.is_a?(Date)
    value_to_convert = value_to_convert.utc.iso8601 if value_to_convert.is_a? Time

    value_to_convert
  }

  mappedData = data.map do |key, value|
    if value.is_a? Hash
      [key, map_iso_dates(value)]
    else
      [key, utc_converter.call(value)]
    end
  end

  Hash[mappedData]
end