class GameAnalytics::Worker

Public Class Methods

new(q) click to toggle source
# File lib/game_analytics/worker.rb, line 10
def initialize(q)
  @queue = q
  @http = HTTPClient.new
  @url_base = "http://api.gameanalytics.com/1/#{options[:game_key]}"
end

Public Instance Methods

process(unit) click to toggle source
# File lib/game_analytics/worker.rb, line 16
def process(unit)
  metric = unit.is_a?(Array) ? unit.first : unit
  klass = metric.class

  json_data = unit.to_json
  header = {'Authorization' => Digest::MD5.hexdigest(json_data + options[:secret_key])}
  header['X-Forwarded-For'] = metric.origin_ip if metric.origin_ip
  category = klass.name.demodulize.downcase
  url = "#{@url_base}/#{category}"
  logger.info "GameAnalytics <: #{url} #{json_data} #{header.inspect}"
  resp = @http.post(url, :body => json_data, :header => header)
  logger.info "GameAnalytics >: #{resp.content} (#{resp.status})"
end
run() click to toggle source
# File lib/game_analytics/worker.rb, line 30
def run
  logger.info "GameAnalytics worker running"
  loop do
    process @queue.pop
  end
end