class Del::Tron

Attributes

configuration[R]
robot[R]

Public Class Methods

new(robot, configuration) click to toggle source
# File lib/del/tron.rb, line 7
def initialize(robot, configuration)
  @robot = robot
  @configuration = configuration
end

Public Instance Methods

execute(request) click to toggle source
# File lib/del/tron.rb, line 12
def execute(request)
  command_for(request)&.call(request) || 'Unknown'
rescue StandardError => error
  error.message
end

Private Instance Methods

change_status(request) click to toggle source
# File lib/del/tron.rb, line 51
def change_status(request)
  robot.public_send("#{request['status'].downcase}!", request['message'])
  'Done!'
rescue NoMethodError
  'Error: Invalid status'
end
command_for(request) click to toggle source
# File lib/del/tron.rb, line 30
def command_for(request)
  commands[request['command'].to_sym]
end
commands() click to toggle source
# File lib/del/tron.rb, line 20
def commands
  {
    change_status: ->(request) { change_status(request) },
    send_message: ->(request) { send_message(request) },
    users: ->(request) { users(request) },
    whoami: ->(request) { whoami(request) },
    whois: ->(request) { JSON.generate(whois(request['q'])) }
  }
end
send_message(request) click to toggle source
# File lib/del/tron.rb, line 38
def send_message(request)
  robot.send_message(request['jid'], request['message'])
  'Sent!'
end
users(_request) click to toggle source
# File lib/del/tron.rb, line 43
def users(_request)
  JSON.generate(configuration.users.all.map(&:attributes))
end
whoami(_request) click to toggle source
# File lib/del/tron.rb, line 47
def whoami(_request)
  JSON.generate(whois(robot.jid))
end
whois(jid) click to toggle source
# File lib/del/tron.rb, line 34
def whois(jid)
  configuration.users[jid]&.attributes || {}
end