class Komonjo::Gateway::MessagesGateway

Merge history and users

Attributes

emojis[R]
history[R]
users[R]

Public Class Methods

new(history, users, emojis) click to toggle source
# File lib/komonjo/gateways/messages_gateway.rb, line 10
def initialize(history, users, emojis)
  @history = history.map { |e| Hash[e.symbolize_keys] }
  @users = users.map do |e|
    h = Hash[e.symbolize_keys]
    h[:profile] = Hash[h[:profile].symbolize_keys]
    Komonjo::Model::User.create(h)
  end
  @emojis = emojis.map do |(name, url)|
    Komonjo::Model::Emoji.create(name, url)
  end
end

Public Instance Methods

messages() click to toggle source
# File lib/komonjo/gateways/messages_gateway.rb, line 22
def messages
  history.map do |e|
    next e unless e[:user]
    Komonjo::Model::Message.create(e).tap do |message|
      message.user = find_user(e[:user])
      message.text = CGI.unescapeHTML(message.text)
      message.partial_messages.each do |e|
        e.embed(embed_data)
      end
    end
  end
end

Private Instance Methods

embed_data() click to toggle source
# File lib/komonjo/gateways/messages_gateway.rb, line 43
def embed_data
  @embed_data ||= {
    users: users,
    emojis: emojis,
  }
end
find_user(user_id) click to toggle source
# File lib/komonjo/gateways/messages_gateway.rb, line 37
def find_user(user_id)
  @users.find { |e| e.id == user_id }.tap do |e|
    raise "unknown user: #{user_id}" unless e
  end
end