Sha256: 01cd4dfbab3c2dc78bc47bc53b9faa82d620f9e8f574eed9db1e75f8ed2f1bf9

Contents?: true

Size: 1.25 KB

Versions: 4

Compression:

Stored size: 1.25 KB

Contents

module Del
  class Robot
    attr_reader :connection, :router, :server
    attr_reader :users, :rooms
    attr_reader :jid, :name

    def initialize(configuration:)
      @connection = Connection.new(configuration: configuration)
      @jid = configuration.jid
      @name = configuration.name
      @router = configuration.router
      @users = configuration.users
      @rooms = configuration.rooms
      @server = SocketServer.new(socket_file: configuration.socket_file)
    end

    def get_funky!(start_server: true)
      Del.logger.info("It's fire! 🔥")
      connection.connect(self)
      server.run(self) if start_server
    rescue Interrupt
      connection.disconnect
    end

    def receive(message, source:)
      return if source.from?(self)
      router.route(Message.new(message, robot: self, source: source))
    end

    def send_message(jid, message)
      if user?(jid)
        connection.deliver(jid, message)
      else
        connection.deliver_to_room(jid, message)
      end
    end

    def execute(request)
      case request['command']
      when 'send_message'
        send_message(request['jid'], request['message'])
        "Sent!"
      else
        "Unknown"
      end
    end

    private

    def user?(jid)
      users[jid]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
del-0.1.9 lib/del/robot.rb
del-0.1.8 lib/del/robot.rb
del-0.1.7 lib/del/robot.rb
del-0.1.6 lib/del/robot.rb