Exemplo n.º 1
0
        public InternalErrorResponse GetErrors <TException>(TException exception)
            where TException : Exception
        {
            if (exception == null)
            {
                throw new ArgumentNullException(nameof(exception));
            }

            var userError = _errorProvider.ExtractErrorsFor(exception,
                                                            ErrorProviderOptionsFactory.ExcludeDetailedErrors(_options));
            var message    = _errorMessageFormatter.FormatErrorMessages(userError);
            var statusCode = _responseCodeProvider.GetHttpStatusCode(exception);

            if (_options.ErrorLevelOfDetails == LevelOfDetails.StandardMessage)
            {
                return(new InternalErrorResponse(message, statusCode));
            }

            if (_options.ErrorLevelOfDetails == LevelOfDetails.UserErrors)
            {
                return(new InternalErrorResponse(message, statusCode, userError));
            }

            var detailedError = _errorProvider.ExtractErrorsFor(exception,
                                                                ErrorProviderOptionsFactory.IncludeDetailedErrors(_options));

            return(new InternalErrorResponse(message, statusCode, userError, detailedError));
        }