diff --git a/lib/lita/handler.rb b/lib/lita/handler.rb index ba350541..eaa93bf9 100644 --- a/lib/lita/handler.rb +++ b/lib/lita/handler.rb @@ -51,19 +51,7 @@ def routes # @param message [Lita::Message] The incoming message. # @return [void] def dispatch(robot, message) - routes.select { |r| route_applies?(r, message, robot) }.each do |route| - log_dispatch(route) - - begin - new(robot).public_send( - route.method_name, - build_response(message, route) - ) - rescue Exception => e - log_dispatch_error(e) - raise e if rspec_loaded? - end - end + routes.select { |r| route_applies?(r, message, robot) }.each { |route| dispatch_to(route, robot, message) } end # Creates a new {Lita::HTTPRoute} which is used to define an HTTP route @@ -95,6 +83,20 @@ def namespace private + def dispatch_to(route, robot, message) + log_dispatch(route) + + begin + new(robot).public_send( + route.method_name, + build_response(message, route) + ) + rescue Exception => e + log_dispatch_error(e) + raise e if rspec_loaded? + end + end + # Builds a response object for an incoming message. def build_response(message, route) Response.new(message, matches: message.match(route.pattern))