class FnordMetric::API

Public Class Methods

new(opts={}) click to toggle source
# File lib/fnordmetric/api.rb, line 5
def initialize(opts={})
  @@opts = FnordMetric.default_options(opts)
  connect
end

Public Instance Methods

connect() click to toggle source
# File lib/fnordmetric/api.rb, line 10
def connect
  @redis = Redis.connect(:url => @@opts[:redis_url])
end
disconnect() click to toggle source
# File lib/fnordmetric/api.rb, line 28
def disconnect
  @redis.quit
end
event(event_data) click to toggle source
# File lib/fnordmetric/api.rb, line 14
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

Private Instance Methods

get_next_uuid() click to toggle source
# File lib/fnordmetric/api.rb, line 43
def get_next_uuid
  rand(8**32).to_s(36)
end
push_event(event_id, event_data) click to toggle source
# File lib/fnordmetric/api.rb, line 34
def push_event(event_id, event_data)
  prefix = @@opts[:redis_prefix]
  @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