module Socrates::Adapters::Adapter

Public Instance Methods

channel_from(context: nil, user: nil) click to toggle source
# File lib/socrates/adapters/adapter.rb, line 13
def channel_from(context: nil, user: nil)
  raise NotImplementedError
end
client_id_from(context: nil, user: nil) click to toggle source

Many of the methods in the Adapter module serve as an interface for Adapter implementations to implement. We want to serve as an example, even if we don't provide implementations here.

# File lib/socrates/adapters/adapter.rb, line 9
def client_id_from(context: nil, user: nil)
  raise NotImplementedError
end
flush_session(session, channel: nil) click to toggle source
# File lib/socrates/adapters/adapter.rb, line 34
def flush_session(session, channel: nil)
  session.messages.select { |c, _| channel.nil? || channel == c }.each do |c, messages|
    send_message(c, messages.join("\n\n"))
    messages.clear
  end
end
lookup_email(*) click to toggle source
# File lib/socrates/adapters/adapter.rb, line 57
def lookup_email(*)
  raise NotImplementedError
end
lookup_user(email:) click to toggle source
# File lib/socrates/adapters/adapter.rb, line 53
def lookup_user(email:)
  users.members.find { |user| email == user.profile&.email }
end
queue_direct_message(session, message, recipient) click to toggle source
# File lib/socrates/adapters/adapter.rb, line 25
def queue_direct_message(session, message, recipient)
  raise ArgumentError, "recipient is required" unless recipient.present?
  raise ArgumentError, "recipient.id is required" unless recipient.id.present?

  dm_channel = channel_from(user: recipient)

  session.messages[dm_channel] << message
end
queue_message(session, message, send_now: false) click to toggle source
# File lib/socrates/adapters/adapter.rb, line 17
def queue_message(session, message, send_now: false)
  raise ArgumentError, "session is required" unless session.present?
  raise ArgumentError, "session.channel is required" unless session.channel.present?

  session.messages[session.channel] << message
  flush_session(session, channel: session.channel) if send_now
end
send_message(channel, message) click to toggle source
# File lib/socrates/adapters/adapter.rb, line 41
def send_message(channel, message)
  raise NotImplementedError
end
user_from(context:) click to toggle source
# File lib/socrates/adapters/adapter.rb, line 49
def user_from(context:)
  raise NotImplementedError
end
users(include_deleted: false, include_bots: false) click to toggle source
# File lib/socrates/adapters/adapter.rb, line 45
def users(include_deleted: false, include_bots: false)
  raise NotImplementedError
end