From 1f69b76ef30d9e064537e4e82b9d4f51be558afe Mon Sep 17 00:00:00 2001 From: Azul Date: Thu, 11 May 2017 09:55:03 +0200 Subject: respond with 400 on invalid input --- lib/nickserver/reel_server.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'lib/nickserver/reel_server.rb') 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) -- cgit v1.2.3