Sha256: 0ca624886ac6371d8a476fa7fee814f06cb675e12296ea8c9e97c6436b4197c6

Contents?: true

Size: 1.52 KB

Versions: 10

Compression:

Stored size: 1.52 KB

Contents

class FnordMetric::Event  

  attr_accessor :time, :type, :event_id

  #def self.track!(event_type, event_data)
  #end

  def self.all(opts)    
    range_opts = { :withscores => true }
    range_opts.merge!(:limit => [0,opts[:limit]]) if opts[:limit]
    opts[:redis].zrevrangebyscore(
      "#{opts[:namespace_prefix]}-timeline", 
      '+inf', opts[:since]||'0',
      range_opts
    ).in_groups_of(2).map do |event_id, ts|
      next if event_id.blank?
      find(event_id, opts).tap{ |e| e.time = ts }
    end
  end

  def self.by_type(_type, opts)
    opts[:redis].lrange(
      "#{opts[:namespace_prefix]}-type-#{_type}", 
      0, 200).map do |event_id|
      next if event_id.blank?
      find(event_id, opts).tap{ |e| }
    end
  end

  def self.find(event_id, opts)
    self.new(event_id, opts).tap do |event|
      event.fetch!
    end
  end

  def initialize(event_id, opts)
    @opts = opts
    @event_id = event_id
  end

  def fetch!
    @data = JSON.parse(fetch_json).tap do |event|
      @type = event.delete("_type")
    end
  end

  def fetch_json
    @opts[:redis].get(redis_key) || "{}"
  end

  def redis_key
    [@opts[:redis_prefix], :event, @event_id].join("-")
  end

  def session_key
    @data["_session"] ? Digest::MD5.hexdigest(@data["_session"]) : nil
  end

  def id
    @event_id
  end
  
  def data(key=nil)
    key ? @data[key.to_s] : @data
  end

  alias :[] :data

  def to_json
    @data.merge!(
      :_type => @type, 
      :_session_key => session_key,
      :_eid => @event_id,
      :_time => @time
    )
  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
fnordmetric-0.5.9 lib/fnordmetric/event.rb
fnordmetric-0.5.8 lib/fnordmetric/event.rb
fnordmetric-0.5.7 lib/fnordmetric/event.rb
fnordmetric-0.5.6 lib/fnordmetric/event.rb
fnordmetric-0.5.5 lib/fnordmetric/event.rb
fnordmetric-0.5.4 lib/fnordmetric/event.rb
fnordmetric-0.5.3 lib/fnordmetric/event.rb
fnordmetric-0.5.2 lib/fnordmetric/event.rb
fnordmetric-0.5.1 lib/fnordmetric/event.rb
fnordmetric-0.5.0 lib/fnordmetric/event.rb