class RudderAnalyticsSync::Operations::Operation

Constants

DEFAULT_CONTEXT

Attributes

context[R]
options[R]
request[R]

Public Class Methods

new(client, options = {}) click to toggle source
# File lib/rudder_analytics_sync/operations/operation.rb, line 20
def initialize(client, options = {})
  @options = options
  @context = DEFAULT_CONTEXT.merge(options[:context].to_h)
  @request = Request.new(client)
end

Public Instance Methods

call() click to toggle source
# File lib/rudder_analytics_sync/operations/operation.rb, line 26
def call
  raise 'Must be implemented in a subclass'
end

Private Instance Methods

base_payload() click to toggle source
# File lib/rudder_analytics_sync/operations/operation.rb, line 34
def base_payload
  check_identity!
  current_time = Time.now.utc

  payload = {
    context: context,
    integrations: options[:integrations] || { All: true },
    timestamp: maybe_datetime_in_iso8601(options[:timestamp] || Time.now.utc),
    sentAt: maybe_datetime_in_iso8601(current_time),
    messageId: uid(),
    properties: options[:properties] || {}
  }

  # add the userId if present
  if (options[:user_id])
      payload = payload.merge({userId: options[:user_id]})
  end

  # add the anonymousId if present
  if (options[:anonymous_id])
      payload = payload.merge({anonymousId: options[:anonymous_id]})
  end
  payload
end
check_identity!() click to toggle source
# File lib/rudder_analytics_sync/operations/operation.rb, line 59
def check_identity!
  raise ArgumentError, 'user_id or anonymous_id must be present' \
    unless options[:user_id] || options[:anonymous_id]
end