Module: Socrates::Adapters::Adapter

Included in:
Console, Memory, Slack
Defined in:
lib/socrates/adapters/adapter.rb

Instance Method Summary collapse

Instance Method Details

#channel_from(context: nil, user: nil) ⇒ Object

Raises:

  • (NotImplementedError)


15
16
17
# File 'lib/socrates/adapters/adapter.rb', line 15

def channel_from(context: nil, user: nil)
  raise NotImplementedError
end

#client_id_from(context: nil, user: nil) ⇒ Object

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. Therefor, we’re disabling this cop to avoid its warnings. rubocop:disable Lint/UnusedMethodArgument

Raises:

  • (NotImplementedError)


11
12
13
# File 'lib/socrates/adapters/adapter.rb', line 11

def client_id_from(context: nil, user: nil)
  raise NotImplementedError
end

#flush_session(session, channel: nil) ⇒ Object



36
37
38
39
40
41
# File 'lib/socrates/adapters/adapter.rb', line 36

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_emailObject

Raises:

  • (NotImplementedError)


59
60
61
# File 'lib/socrates/adapters/adapter.rb', line 59

def lookup_email(*)
  raise NotImplementedError
end

#lookup_user(email:) ⇒ Object



55
56
57
# File 'lib/socrates/adapters/adapter.rb', line 55

def lookup_user(email:)
  users.members.find { |user| email == user.profile&.email }
end

#queue_direct_message(session, message, recipient) ⇒ Object

Raises:

  • (ArgumentError)


27
28
29
30
31
32
33
34
# File 'lib/socrates/adapters/adapter.rb', line 27

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) ⇒ Object

Raises:

  • (ArgumentError)


19
20
21
22
23
24
25
# File 'lib/socrates/adapters/adapter.rb', line 19

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) ⇒ Object

Raises:

  • (NotImplementedError)


43
44
45
# File 'lib/socrates/adapters/adapter.rb', line 43

def send_message(channel, message)
  raise NotImplementedError
end

#user_from(context:) ⇒ Object

Raises:

  • (NotImplementedError)


51
52
53
# File 'lib/socrates/adapters/adapter.rb', line 51

def user_from(context:)
  raise NotImplementedError
end

#users(include_deleted: false, include_bots: false) ⇒ Object

Raises:

  • (NotImplementedError)


47
48
49
# File 'lib/socrates/adapters/adapter.rb', line 47

def users(include_deleted: false, include_bots: false)
  raise NotImplementedError
end