Commit 2cc4d62
Changed files (4)
lib
lib/del/cli.rb
@@ -42,18 +42,7 @@ module Del
desc 'message <jid> <message>', 'send a message to the Jabber ID'
def message(jid, message)
- socket = UNIXSocket.new(options[:socket_file])
- socket.puts(
- JSON.generate(command: :send_message, jid: jid, message: message)
- )
- say socket.readline, :green
- rescue EOFError => error
- say error.message, :red
- rescue Errno::ECONNREFUSED => error
- say error.message, :red
- say 'You must start the del server first.', :yellow
- ensure
- socket&.close
+ SendMessage.new(self).run(jid, message)
end
desc 'setup', 'setup your $HOME/.delrc'
lib/del/send_message.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module Del
+ class SendMessage
+ def initialize(shell)
+ @shell = shell
+ end
+
+ def run(jid, message)
+ socket = SocketMessage.new(@shell)
+ socket.deliver(
+ command: :send_message,
+ jid: jid,
+ message: message
+ )
+ @shell.say(socket.listen, :green)
+ ensure
+ socket.close
+ end
+ end
+end
lib/del/socket_message.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module Del
+ class SocketMessage
+ def initialize(shell)
+ @shell = shell
+ end
+
+ def deliver(payload)
+ socket.puts(message_for(payload))
+ rescue EOFError => error
+ @shell.say error.message, :red
+ rescue Errno::ECONNREFUSED => error
+ @shell.say error.message, :red
+ @shell.say 'You must start the del server first.', :yellow
+ end
+
+ def listen
+ socket.readline
+ end
+
+ def close
+ socket&.close
+ end
+
+ private
+
+ def message_for(payload)
+ JSON.generate(payload)
+ end
+
+ def socket
+ @socket ||= UNIXSocket.new(options[:socket_file])
+ end
+ end
+end
lib/del.rb
@@ -17,8 +17,10 @@ require 'del/default_router'
require 'del/message'
require 'del/repository'
require 'del/robot'
+require 'del/send_message'
require 'del/shell_command'
require 'del/socket_connection'
+require 'del/socket_message'
require 'del/socket_server'
require 'del/source'
require 'del/user'