Sha256: dc96621be24d094a9e4215039b65d1bce7e002d5d60ab153b0c21c51ab5410d8

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

require 'securerandom'
class FnordMetric::API
  @@opts = nil
  def initialize opts
    @@opts = FnordMetric.default_options(opts)
    connect
  end
  
  def connect
    @redis = @@opts[:redis] if @@opts[:redis]
    @redis = Redis.connect(:url => @@opts[:redis_url])
  end
  
  def event(event_data)
    begin
      if event_data.is_a?(Hash)
        event_data = event_data.to_json  
      else
        JSON.parse(event_data) # void ;)
      end
    rescue JSON::ParserError
      FnordMetric.log("event_lost: can't parse json")
    else
      push_event(get_next_uuid, event_data)
    end
  end

  def disconnect
    @redis.quit
  end
  
  private 
  
  def push_event(event_id, event_data)    
    prefix = @@opts[:redis_prefix]    
    @redis.hincrby "#{prefix}-testdata",          "events_received", 1
    @redis.hincrby "#{prefix}-stats",             "events_received", 1
    @redis.set     "#{prefix}-event-#{event_id}", event_data
    @redis.lpush   "#{prefix}-queue",             event_id       
    @redis.expire  "#{prefix}-event-#{event_id}", @@opts[:event_queue_ttl]
    event_id
  end
  
  def get_next_uuid
    SecureRandom.uuid
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fnordmetric-0.6.4 lib/fnordmetric/api.rb
fnordmetric-0.6.3 lib/fnordmetric/api.rb