using System.Net; namespace BlackRock.Reporting.API.Exceptions { public class ExceptionHandler : IExceptionHandler { private readonly ILogger logger; public ExceptionHandler(ILogger logger) { this.logger = logger; } public Error HandleException(Exception exception) { var error = exception switch { DomainException domainException => HandleDomainException(domainException), ResourceNotFoundException resourceNotFoundException => HandleResourceNotFoundException(resourceNotFoundException) }; return error; } private Error HandleResourceNotFoundException(ResourceNotFoundException resourceNotFoundException) { logger.LogInformation(resourceNotFoundException, resourceNotFoundException.Message); return new Error { Title = resourceNotFoundException.Message, StatusCode = HttpStatusCode.BadRequest }; } private Error HandleDomainException(DomainException domainException) { logger.LogInformation(domainException, domainException.Message); return new Error { Title = domainException.Message, StatusCode = HttpStatusCode.BadRequest }; } private Error HandleUnhandledException(Exception exception) { logger.LogInformation(exception, exception.Message); return new Error { Title = exception.Message, StatusCode = HttpStatusCode.InternalServerError }; } } }