Commit 79b93fe

mo <mo.khan@gmail.com>
2018-04-29 19:35:30
deliver message to user or room.
1 parent 355e5e6
bin/console
@@ -11,4 +11,8 @@ require "del"
 # Pry.start
 
 require "irb"
+Del.start(
+  dotenv_file: Pathname.new(Dir.home).join(".delrc"),
+  start_server: false,
+)
 IRB.start(__FILE__)
lib/del/examples/routes.rb
@@ -10,4 +10,8 @@ Del.configure do |config|
     Del.logger.info("COWSAY!")
     message.reply("/code #{`cowsay #{match_data[1]}`}")
   end
+
+  config.router.register(/^[Hh]ello/) do |message|
+    message.reply("Hi!")
+  end
 end
lib/del/configuration.rb
@@ -17,7 +17,7 @@ module Del
       @host = ENV.fetch("DEL_HOST", 'chat.hipchat.com')
       @jid = ENV.fetch("DEL_JID")
       @logger = Logger.new(STDOUT)
-      @logger.level = Logger::INFO
+      @logger.level = ENV.fetch('LOG_LEVEL', Logger::INFO).to_i
       @muc_domain = ENV.fetch("DEL_MUC_DOMAIN", "conf.hipchat.com")
       @name = ENV.fetch("DEL_FULL_NAME")
       @password = ENV.fetch("DEL_PASSWORD")
lib/del/robot.rb
@@ -14,10 +14,10 @@ module Del
       @server = SocketServer.new
     end
 
-    def get_funky!
+    def get_funky!(start_server: true)
       Del.logger.info("It's fire! 🔥")
       connection.connect(self)
-      server.run(self)
+      server.run(self) if start_server
     rescue Interrupt
       connection.disconnect
     end
@@ -27,12 +27,18 @@ module Del
       router.route(Message.new(message, robot: self, source: source))
     end
 
-    def send_message(jid, message, room: nil)
-      if room.nil?
+    def send_message(jid, message)
+      if user?(jid)
         connection.deliver(jid, message)
       else
-        connection.deliver_to_room(room, message)
+        connection.deliver_to_room(jid, message)
       end
     end
+
+    private
+
+    def user?(jid)
+      users[jid]
+    end
   end
 end
lib/del/socket_server.rb
@@ -7,7 +7,9 @@ module Del
     def run(robot)
       loop do
         @connection.on_receive do |socket|
-          Del.logger.info(socket.readline)
+          line = socket.readline
+          Del.logger.debug(line)
+          robot.process(line)
         end
       end
     end
lib/del/source.rb
@@ -12,7 +12,7 @@ module Del
     end
 
     def reply(robot, message)
-      robot.send_message(user.jid, message, room: room)
+      robot.send_message(room || user.jid, message)
     end
 
     def to_s
lib/del.rb
@@ -19,7 +19,7 @@ require "del/user"
 require "del/version"
 
 module Del
-  def self.start(dotenv_file:, startup_file:)
+  def self.start(dotenv_file:, startup_file: nil, start_server: true)
     puts "Loading... #{dotenv_file}"
     Dotenv.load(dotenv_file.to_s)
     Del.configure do |config|
@@ -30,7 +30,7 @@ module Del
     load startup_file if startup_file && File.exist?(startup_file)
 
     del = Robot.new(configuration: configuration)
-    del.get_funky!
+    del.get_funky!(start_server: start_server)
   end
 
   def self.configure