Module: Hawkei

Defined in:
lib/hawkei.rb,
lib/hawkei/util.rb,
lib/hawkei/batch.rb,
lib/hawkei/const.rb,
lib/hawkei/store.rb,
lib/hawkei/config.rb,
lib/hawkei/errors.rb,
lib/hawkei/message.rb,
lib/hawkei/request.rb,
lib/hawkei/version.rb,
lib/hawkei/watcher.rb,
lib/hawkei/api_resource.rb,
lib/hawkei/library_name.rb,
lib/hawkei/hawkei_object.rb,
lib/hawkei/formated_logger.rb,
lib/hawkei/processor/async.rb,
lib/hawkei/processor/batch.rb,
lib/hawkei/processor/worker.rb,
lib/hawkei/api_operation/save.rb,
lib/hawkei/plugins/rails/data.rb,
lib/hawkei/api_operation/delete.rb,
lib/hawkei/plugins/rails/railtie.rb,
lib/hawkei/plugins/rack/middleware.rb,
lib/hawkei/plugins/rails/middleware_data.rb,
lib/hawkei/plugins/sidekiq/client_middleware.rb,
lib/hawkei/plugins/sidekiq/server_middleware.rb

Overview

:nodoc:

Defined Under Namespace

Modules: Const, Plugins, Processor, Util Classes: APIOperation, APIResource, Batch, Config, ConfigurationError, FormatedLogger, HawkeiObject, Message, MissingImplementation, Request, RequestError, Store, UnknownRequestMethod, Watcher

Constant Summary collapse

TRACK_EVENTS_CREATE =
'track_events:create'.freeze
IDENTIFY_EVENTS_CREATE =
'identify_events:create'.freeze
GROUP_EVENTS_CREATE =
'group_events:create'.freeze
WATCHERS_CREATE_ACTION =
'watchers:create'.freeze
VERSION =
'1.1.0'.freeze
LIBRARY_NAME =
'hawkei'.freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationsHawkei::Config (readonly)

Returns configurations.

Returns:



53
54
55
# File 'lib/hawkei.rb', line 53

def configurations
  @configurations
end

Class Method Details

.configure {|@configurations = Hawkei::Config.new| ... } ⇒ Object

Configures the Hawkei API

Examples:

Default configuration

Hawkei.configure do |config|
   config.api_key = 'acc_xx'
   config.space_name = 'Hawkei'
   config.environment_name = 'production'
end

Yields:



64
65
66
67
68
# File 'lib/hawkei.rb', line 64

def configure
  yield @configurations = Hawkei::Config.new

  Hawkei.configurations.valid!
end

.group(group_id, payload = {}, options = {}) ⇒ Boolean

Send a create/update for a group

Parameters:

  • group (String)

    id from your database

  • payload (Hash) (defaults to: {})

    to be send

  • options (Hash) (defaults to: {})

    for the request

Returns:

  • (Boolean)

    status of the request



128
129
130
131
132
133
134
135
136
137
138
139
# 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 = {}) ⇒ Boolean

Send an identify event to the server

Parameters:

  • user (String)

    id from your database

  • payload (Hash) (defaults to: {})

    to be send

  • options (Hash) (defaults to: {})

    for the request

Returns:

  • (Boolean)

    status of the request



105
106
107
108
109
110
111
112
113
114
115
116
117
118
# 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 = {}) ⇒ Boolean

Send a track event to the server

Parameters:

  • event (String)

    name

  • payload (Hash) (defaults to: {})

    to be send

  • options (Hash) (defaults to: {})

    for the request

Returns:

  • (Boolean)

    status of the request



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# 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 = {}) ⇒ Boolean|Watcher

Send a create a watcher

Parameters:

  • template (String|Integer)

    hawkei name or id

  • payload (Hash) (defaults to: {})

    to be send

  • options (Hash) (defaults to: {})

    for the request

Returns:

  • (Boolean|Watcher)

    status of the request



149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# 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