class Miu::Nodes::Sana::Subscriber

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/miu/nodes/sana/subscriber.rb, line 12
def initialize(*args)
  super
  @networks = Groonga['networks']
  @rooms = Groonga['rooms']
  @users = Groonga['users']
  @messages = Groonga['messages']
end

Public Instance Methods

on_text(tag, msg) click to toggle source
# File lib/miu/nodes/sana/subscriber.rb, line 20
def on_text(tag, msg)
  add_message(msg)
  Miu::Logger.debug "[ADD] #{msg.inspect}"
end

Private Instance Methods

add_message(msg) click to toggle source
# File lib/miu/nodes/sana/subscriber.rb, line 27
def add_message(msg)
  network_name = msg.network.name
  room_name = msg.content.room.name
  user_name = msg.content.user.name
  text = msg.content.text
  meta = MultiJson.encode msg.content.meta
  time = msg.time

  network = @networks[network_name] || @networks.add(network_name, :name => network_name)
  room = @rooms[room_name] || @rooms.add(room_name, :network => network, :name => room_name)
  user = @users[user_name] || @users.add(user_name, :network => network, :name => user_name)
  @messages.add({
    :network => network,
    :room => room,
    :user => user,
    :text => text,
    :meta => meta,
    :time => time
  })
end