class VWO::Services::BatchEventsDispatcher

Public Class Methods

new() click to toggle source

Initialize the BatchEventDispatcher with logger and development mode

@param [Boolean] : To specify whether the request

to our server should be made or not.
# File lib/vwo/services/batch_events_dispatcher.rb, line 27
def initialize
  @logger = VWO::Logger.get_instance
  @queue = []
end

Public Instance Methods

dispatch(impression, callback, query_params) click to toggle source

Dispatch the impression event having properties object only if dev-mode is OFF

@param :properties hash having impression properties

the request to be dispatched to the VWO server

@return

# File lib/vwo/services/batch_events_dispatcher.rb, line 38
def dispatch(impression, callback, query_params)
  url = CONSTANTS::HTTPS_PROTOCOL + CONSTANTS::ENDPOINTS::BASE_URL + CONSTANTS::ENDPOINTS::BATCH_EVENTS
  account_id = query_params[:a]
  resp = VWO::Utils::Request.post(url, query_params, impression)
  if resp.code == '200'
    @logger.log(
      LogLevelEnum::INFO,
      format(
        LogMessageEnum::InfoMessages::BULK_IMPRESSION_SUCCESS,
        file: FileNameEnum::BatchEventsDispatcher,
        end_point: url,
        a: account_id
      )
    )
    message = nil
  elsif resp.code == '413'
    @logger.log(
      LogLevelEnum::DEBUG,
      format(
        LogMessageEnum::DebugMessages::BATCH_EVENT_LIMIT_EXCEEDED,
        file: FileNameEnum::BatchEventsDispatcher,
        end_point: url,
        accountId: impression[:a],
        eventsPerRequest: impression.length()
      )
    )

    @logger.log(
      LogLevelEnum::ERROR,
      format(
        LogMessageEnum::ErrorMessages::IMPRESSION_FAILED,
        file: FileNameEnum::BatchEventsDispatcher,
        end_point: url
      )
    )
    message = resp.message
  else
    @logger.log(
      LogLevelEnum::DEBUG,
      format(
        LogMessageEnum::DebugMessages::BULK_NOT_PROCESSED,
        file: FileNameEnum::BatchEventsDispatcher
        )
    )

    @logger.log(
      LogLevelEnum::ERROR,
      format(LogMessageEnum::ErrorMessages::IMPRESSION_FAILED, file: FileNameEnum::BatchEventsDispatcher, end_point: url)
    )
    message = resp.message
  end
  if callback
    callback.call(message, impression)
  end
rescue StandardError => e
  @logger.log(
    LogLevelEnum::DEBUG,
    format(
      LogMessageEnum::DebugMessages::BULK_NOT_PROCESSED,
      file: FileNameEnum::BatchEventsDispatcher
    )
  )

  @logger.log(
    LogLevelEnum::ERROR,
    format(LogMessageEnum::ErrorMessages::IMPRESSION_FAILED, file: FileNameEnum::BatchEventsDispatcher, end_point: url)
  )
  false
end