Commit 5113782
Changed files (7)
lib
lib/del/examples/routes.rb
@@ -1,17 +1,17 @@
-Del.configure do |config|
+Del.configure do |x|
puts "Registering custom routes."
- config.router.register(/.*/) do |message|
+ x.router.register(/.*/) do |message|
Del.logger.info("Backwards!")
message.reply(message.text.reverse)
end
- config.router.register(/^cowsay (.*)/) do |message, match_data|
+ x.router.register(/^cowsay (.*)/) do |message, match_data|
Del.logger.info("COWSAY!")
message.reply("/code #{`cowsay #{match_data[1]}`}")
end
- config.router.register(/^[Hh]ello/) do |message|
+ x.router.register(/^[Hh]ello/) do |message|
message.reply("Hi!")
end
end
lib/del/cli.rb
@@ -6,13 +6,22 @@ module Del
class CLI < Thor
DEFAULT_RC=Pathname.new(Dir.home).join(".delrc")
class_option :dotenv_file, default: ENV.fetch("DELRC", DEFAULT_RC)
+ class_option :socket_file, default: Del::Configuration::SOCKET_FILE
desc "server <routes.rb>", "start server"
def server(startup_file = nil)
Del.start(
dotenv_file: options[:dotenv_file],
+ socket_file: options[:socket_file],
startup_file: startup_file,
)
end
+
+ 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(jid: jid, message: message))
+ socket.close
+ end
end
end
lib/del/configuration.rb
@@ -1,5 +1,6 @@
module Del
class Configuration
+ SOCKET_FILE="/tmp/del.sock"
attr_accessor :default_rooms
attr_accessor :host
attr_accessor :jid
@@ -11,6 +12,7 @@ module Del
attr_accessor :rooms
attr_accessor :router
attr_accessor :users
+ attr_accessor :socket_file
def initialize
@default_rooms = ENV.fetch("DEL_ROOMS", '').split(',')
@@ -23,6 +25,7 @@ module Del
@password = ENV.fetch("DEL_PASSWORD")
@rooms = Repository.new
@router = DefaultRouter.new
+ @socket_file = SOCKET_FILE
@users = Repository.new
end
end
lib/del/robot.rb
@@ -11,7 +11,7 @@ module Del
@router = configuration.router
@users = configuration.users
@rooms = configuration.rooms
- @server = SocketServer.new
+ @server = SocketServer.new(socket_file: configuration.socket_file)
end
def get_funky!(start_server: true)
lib/del/socket_connection.rb
@@ -1,6 +1,6 @@
module Del
class SocketConnection
- def initialize(path: '/tmp/del.sock')
+ def initialize(path:)
File.unlink(path) if File.exists?(path)
@server = UNIXServer.new(path)
end
lib/del/socket_server.rb
@@ -1,7 +1,7 @@
module Del
class SocketServer
- def initialize(connection = SocketConnection.new)
- @connection = connection
+ def initialize(socket_file:)
+ @connection = SocketConnection.new(path: socket_file)
end
def run(robot)
lib/del.rb
@@ -20,10 +20,11 @@ require "del/user"
require "del/version"
module Del
- def self.start(dotenv_file:, startup_file: nil, start_server: true)
+ def self.start(dotenv_file:, startup_file: nil, start_server: true, socket_file: nil)
puts "Loading... #{dotenv_file}"
Dotenv.load(dotenv_file.to_s)
Del.configure do |config|
+ config.socket_file = socket_file if socket_file
config.router.register(/.*/) do |message|
logger.debug(message.to_s)
end