class Socrates::Adapters::Memory

Constants

CHANNEL
CLIENT_ID

Attributes

client_id[RW]
history[R]

Public Class Methods

new() click to toggle source
# File lib/socrates/adapters/memory.rb, line 16
def initialize
  super()
  @history = Hash.new { |hash, key| hash[key] = [] }
end

Public Instance Methods

channel_from(context: nil, user: nil) click to toggle source
# File lib/socrates/adapters/memory.rb, line 27
def channel_from(context: nil, user: nil)
  raise ArgumentError, "Must provide one of :context or :user" if context.nil? && user.nil?

  user.nil? ? CHANNEL : users_channel(user)
end
client_id_from(context: nil, user: nil) click to toggle source
# File lib/socrates/adapters/memory.rb, line 21
def client_id_from(context: nil, user: nil)
  raise ArgumentError, "Must provide one of :context or :user" if context.nil? && user.nil?

  @client_id || CLIENT_ID
end
dms(user) click to toggle source
# File lib/socrates/adapters/memory.rb, line 45
def dms(user)
  @history[users_channel(user)]
end
last_dm(user) click to toggle source
# File lib/socrates/adapters/memory.rb, line 49
def last_dm(user)
  dms(user)[-1]
end
last_msg() click to toggle source
# File lib/socrates/adapters/memory.rb, line 41
def last_msg
  msgs[-1]
end
msgs() click to toggle source

Methods for fetching messages and dms in specs…

# File lib/socrates/adapters/memory.rb, line 37
def msgs
  @history[CHANNEL]
end

Private Instance Methods

send_message(channel, message) click to toggle source
# File lib/socrates/adapters/memory.rb, line 55
def send_message(channel, message)
  @history[channel] << message
end
users_channel(user) click to toggle source
# File lib/socrates/adapters/memory.rb, line 59
def users_channel(user)
  user.respond_to?(:id) ? user.id : user
end