Sha256: dba89fc5d9cb5018559ca58650177175ad52174e2bfa4121cecc85ad47ff33fa

Contents?: true

Size: 1.76 KB

Versions: 1

Compression:

Stored size: 1.76 KB

Contents

# frozen_string_literal: true

require 'rudder_analytics_sync/utils'

module RudderAnalyticsSync
  module Operations
    class Operation
      include RudderAnalyticsSync::Utils

      DEFAULT_CONTEXT = {
        library: {
          name: 'rudder-sdk-ruby-sync',
          version: RudderAnalyticsSync::VERSION
        },
        traits: {

        }
      }.freeze

      def initialize(client, options = {})
        @options = options
        @context = DEFAULT_CONTEXT.merge(options[:context].to_h)
        @request = Request.new(client)
      end

      def call
        raise 'Must be implemented in a subclass'
      end

      private

      attr_reader :options, :request, :context

      def base_payload
        # check_identity!
        current_time = Time.now.utc

        anonymous_id = options[:anonymous_id] || uid()
        user_id = options[:user_id]
        context[:traits] = (context[:traits] || {}).merge(
          {
            anonymousId: anonymous_id
          }
        )

        if (user_id) 
          context[:traits] = context[:traits].merge({userId: user_id})
        end

        payload = {
          anonymousId: anonymous_id,
          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] || {}
        }

        if (user_id)
          payload = payload.merge({userId: user_id})
        end
        payload
      end

      # def check_identity!
      #   raise ArgumentError, 'user_id or anonymous_id must be present' \
      #     unless options[:user_id] || options[:anonymous_id]
      # end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rudder_analytics_sync-1.0.6 lib/rudder_analytics_sync/operations/operation.rb