module Hawkei

Implementation of the Hawkei

Constants

GROUP_EVENTS_CREATE
IDENTIFY_EVENTS_CREATE
TRACK_EVENTS_CREATE
WATCHERS_CREATE_ACTION

Attributes

configurations[R]

@return [Hawkei::Config] configurations

Public Class Methods

configure() { |configurations = config| ... } click to toggle source

Configures the Hawkei API

@example Default configuration

Hawkei.configure do |config|
   config.api_key = 'acc_xx'
   config.space_name = 'Hawkei'
   config.environment_name = 'production'
end
# File lib/hawkei.rb, line 64
def configure
  yield @configurations = Hawkei::Config.new

  Hawkei.configurations.valid!
end
group(group_id, payload = {}, options = {}) click to toggle source

Send a create/update for a group

@param [String] group id from your database @param [Hash] payload to be send @param [Hash] options for the request

@return [Boolean] status of the request

# File lib/hawkei.rb, line 128
def group(group_id, payload = {}, options = {})
  return true unless configurations.enabled

  payload = Message.base.merge(payload)
  payload[:group_id] = group_id

  processor.enqueue(
    action: GROUP_EVENTS_CREATE,
    payload: payload,
    options: options.select { |k, _v| %i[space_name environment_name].include?(k) },
  )
end
identify(user_id, payload = {}, options = {}) click to toggle source

Send an identify event to the server

@param [String] user id from your database @param [Hash] payload to be send @param [Hash] options for the request

@return [Boolean] status of the request

# File lib/hawkei.rb, line 105
def identify(user_id, payload = {}, options = {})
  return true unless configurations.enabled

  payload[:user_id] = user_id
  Hawkei::Plugins::Rails::Data.store_data if defined?(Hawkei::Plugins::Rails::Data)

  payload = Message.extended.merge(payload)

  processor.enqueue(
    action: IDENTIFY_EVENTS_CREATE,
    payload: payload,
    options: options.select { |k, _v| %i[space_name environment_name].include?(k) },
  )
end
track(name, payload = {}, options = {}) click to toggle source

Send a track event to the server

@param [String] event name @param [Hash] payload to be send @param [Hash] options for the request

@return [Boolean] status of the request

# File lib/hawkei.rb, line 78
def track(name, payload = {}, options = {})
  return true unless configurations.enabled

  payload = {
    name: name,
    type: 'track',
  }.merge(payload)

  Hawkei::Plugins::Rails::Data.store_data if defined?(Hawkei::Plugins::Rails::Data)

  payload = Message.extended.merge(payload)

  processor.enqueue(
    action: TRACK_EVENTS_CREATE,
    payload: payload,
    options: options.select { |k, _v| %i[space_name environment_name].include?(k) },
  )
end
watch(flow, payload = {}, options = {}) click to toggle source

Send a create a watcher

@param [String|Integer] template hawkei name or id @param [Hash] payload to be send @param [Hash] options for the request

@return [Boolean|Watcher] status of the request

# File lib/hawkei.rb, line 149
def watch(flow, payload = {}, options = {})
  return true unless configurations.enabled

  payload[:template_flow] = flow
  payload = Message.base.merge(payload)

  payload.delete(:session_tracker_id) if payload.delete(:without_session)

  if options[:sync]
    Watcher.create(payload, options)
  else
    processor.enqueue(
      action: WATCHERS_CREATE_ACTION,
      payload: payload,
      options: options.select { |k, _v| %i[space_name environment_name].include?(k) },
    )
  end
end

Private Class Methods

processor() click to toggle source
# File lib/hawkei.rb, line 170
def processor
  @processor ||= Processor::Async.new
end