summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/nickserver/client_error.rb4
-rw-r--r--lib/nickserver/error_response.rb6
-rw-r--r--lib/nickserver/reel_server.rb15
3 files changed, 19 insertions, 6 deletions
diff --git a/lib/nickserver/client_error.rb b/lib/nickserver/client_error.rb
new file mode 100644
index 0000000..bb532fd
--- /dev/null
+++ b/lib/nickserver/client_error.rb
@@ -0,0 +1,4 @@
+module Nickserver
+ class ClientError < StandardError
+ end
+end
diff --git a/lib/nickserver/error_response.rb b/lib/nickserver/error_response.rb
index 9d53630..9ec3866 100644
--- a/lib/nickserver/error_response.rb
+++ b/lib/nickserver/error_response.rb
@@ -3,12 +3,12 @@ require 'nickserver/response'
module Nickserver
class ErrorResponse < Nickserver::Response
def initialize(message)
- @status = 500
- @message = message + "\n"
+ @status = 400
+ @message = message
end
def content
- "#{status} #{message}"
+ JSON.generate(error: message)
end
protected
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)