Commit 0c1ea5c

mo <mo.khan@gmail.com>
2018-05-19 15:59:13
extract tron class.
1 parent a60d133
Changed files (3)
lib/del/robot.rb
@@ -14,7 +14,10 @@ module Del
     def get_funky!(start_server: true)
       Del.logger.info('๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ')
       xmpp_connection.connect(self)
-      socket_server.run(self) if start_server
+      if start_server
+        deltron = Del::Tron.new(self, configuration)
+        socket_server.run(deltron)
+      end
     rescue Interrupt
       xmpp_connection.disconnect
     end
@@ -34,18 +37,6 @@ module Del
       end
     end
 
-    def execute(request)
-      {
-        send_message: lambda do
-          send_message(request['jid'], request['message'])
-          'Sent!'
-        end,
-        users: -> { JSON.generate(configuration.users.all.map(&:attributes)) },
-        whoami: -> { JSON.generate(whois(jid)) },
-        whois: -> { JSON.generate(whois(request['q'])) }
-      }[request['command'].to_sym]&.call || 'Unknown'
-    end
-
     private
 
     attr_reader :configuration
@@ -62,9 +53,5 @@ module Del
     def user?(jid)
       configuration.users[jid]
     end
-
-    def whois(jid)
-      configuration.users[jid]&.attributes || {}
-    end
   end
 end
lib/del/tron.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+module Del
+  class Tron
+    attr_reader :robot, :configuration
+
+    def initialize(robot, configuration)
+      @robot = robot
+      @configuration = configuration
+    end
+
+    def execute(request)
+      {
+        send_message: -> { send_message(request) },
+        users: -> { users(request) },
+        whoami: -> { whoami(request) },
+        whois: -> { JSON.generate(whois(request['q'])) }
+      }[request['command'].to_sym]&.call || 'Unknown'
+    end
+
+    private
+
+    def whois(jid)
+      configuration.users[jid]&.attributes || {}
+    end
+
+    def send_message(request)
+      robot.send_message(request['jid'], request['message'])
+      'Sent!'
+    end
+
+    def users(_request)
+      JSON.generate(configuration.users.all.map(&:attributes))
+    end
+
+    def whoami(_request)
+      JSON.generate(whois(jid))
+    end
+  end
+end
lib/del.rb
@@ -23,6 +23,7 @@ require 'del/socket_connection'
 require 'del/socket_message'
 require 'del/socket_server'
 require 'del/source'
+require 'del/tron'
 require 'del/user'
 require 'del/version'