summaryrefslogtreecommitdiff
path: root/lib/nickserver/reel_server.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/nickserver/reel_server.rb')
-rw-r--r--lib/nickserver/reel_server.rb15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/nickserver/reel_server.rb b/lib/nickserver/reel_server.rb
index c378aca..17ad441 100644
--- a/lib/nickserver/reel_server.rb
+++ b/lib/nickserver/reel_server.rb
@@ -6,6 +6,7 @@ require 'nickserver/config'
require 'nickserver/adapters/celluloid_http'
require 'nickserver/dispatcher'
require 'nickserver/logging_responder'
+require 'nickserver/client_error'
module Nickserver
class ReelServer < Reel::Server::HTTP
@@ -35,16 +36,24 @@ module Nickserver
protected
def handle_request(request)
- logger.info "#{request.method} #{request.uri}"
- logger.debug " #{params(request)}"
+ log_request(request)
handler = handler_for(request)
handler.respond_to params(request), request.headers
+ rescue ClientError => e
+ logger.warn e
+ request.respond 400, JSON.generate(error: e.message)
rescue StandardError => e
logger.error e
- logger.error e.backtrace.join "\n "
request.respond 500, "{}"
end
+ def log_request(request)
+ logger.info "#{request.method} #{request.uri}"
+ logger.debug " #{params(request)}"
+ rescue URI::Error => e
+ raise ClientError, e.message
+ end
+
def handler_for(request)
# with reel the request is the responder
responder = LoggingResponder.new(request, logger)