Exemplo n.º 1
0
        public static ErrorResponse FromException(Exception exception, INancyEnvironment environment)
        {
            Logger.Error(exception, exception.Message);

            var validatorException = exception as ValidatorException;

            if (validatorException != null)
            {
                var validationErrors = validatorException.ValidationErrors;

                return(new ErrorResponse(ErrorMessage.FromErrors(validationErrors.ToArray()),
                                         environment)
                {
                    StatusCode = HttpStatusCode.BadRequest
                });
            }

            var statusCode = HttpStatusCode.InternalServerError;

            if (exception is AuthenticationException)
            {
                statusCode = HttpStatusCode.Unauthorized;
            }
            else if (exception is UnauthorizedAccessException)
            {
                statusCode = HttpStatusCode.Forbidden;
            }
            else if (exception is RouteExecutionEarlyExitException)
            {
                statusCode = HttpStatusCode.Unauthorized;
            }
            else if (exception is ValidationException)
            {
                statusCode = HttpStatusCode.BadRequest;
            }
            else if (exception is ArgumentException)
            {
                statusCode = HttpStatusCode.BadRequest;
            }
            else if (exception is NullReferenceException)
            {
                statusCode = HttpStatusCode.BadRequest;
            }

            var error    = ErrorMessage.FromExceptions(exception);
            var response = new ErrorResponse(error, environment)
            {
                StatusCode = statusCode
            };

            return(response);
        }