lib/boty/session.rb in boty-0.0.17.1 vs lib/boty/session.rb in boty-0.1.0

- old
+ new

@@ -8,51 +8,55 @@ def start(&block) EM.run do login @bot = initialize_bot(&block) - stablish_connection do |ws| - ws.on :message do |event| - begin - on_message event, @bot - rescue StandardError => e - logger.error "Message #{event} could not be processed. #{e.message}" - end - end - end + stablish_connection end self end private + def on_connect(ws) + ws.on :message do |event| + begin + on_message event, @bot + rescue StandardError => e + logger.error "Message #{event} could not be processed. #{e.message}" + logger.debug e.backtrace.reduce("") { |msg, line| msg << "#{line}\n" } + end + end + end + def login - logger.debug { "logging in against slack right now" } + logger.debug { "Logging in against slack right now" } @slack_info = Slack.rtm.start logger.debug { "yep! logged in!" } @session_url = @slack_info["url"] end def initialize_bot(&block) - Bot.new(@slack_info["self"], self).tap { |bot| - block.call ScriptDSL.new(bot) if block_given? - logger.debug { "bot is configured and ready to go!" } + Bot.new(@slack_info["self"]).tap { |bot| + DSL.new(bot).instance_eval(&block) if block_given? + logger.debug { "Bot is configured and ready to go!" } } end def on_message(event, bot) - logger.debug { "message arrived #{event.data}" } + logger.debug { "Message arrived. Creating bot event" } bot.event JSON.parse(event.data) end def on_close - logger.debug { "bye byeb." } + logger.debug { "bye bye" } + #todo try to reconnect (stablish_connection) unless is an em interrupt end def stablish_connection - logger.debug { "starting to listen on #{@session_url}" } + logger.debug { "Starting to listen on #{@session_url}" } ws = Faye::WebSocket::Client.new @session_url ws.on :close do on_close end - yield ws if block_given? + on_connect ws end end end