using SurveyBackend.Services.Exceptions;
namespace SurveyBackend.Middlewares;
///
/// Имбовая миддлваря, ловит все эксепшны, кастомные прокидывает как HTTP-exception, остальные кидает 502 и кайфуем
///
public class ExceptionsMiddleware
{
private readonly RequestDelegate _next;
private readonly ILogger _logger;
///
/// Ну типа конструктор хз
///
///
///
public ExceptionsMiddleware(RequestDelegate next, ILogger logger)
{
_next = next;
_logger = logger;
}
///
///
///
///
public async Task InvokeAsync(HttpContext context)
{
try
{
await _next(context);
}
catch (ServiceException ex)
{
context.Response.StatusCode = ex.StatusCode;
context.Response.ContentType = "application/json";
var response = new
{
error = ex.Message
};
await context.Response.WriteAsJsonAsync(response);
}
catch (Exception ex)
{
_logger.LogError(ex.Message);
context.Response.StatusCode = 500;
context.Response.ContentType = "application/json";
var response = new
{
error = "Internal Server Error. GG WP, request bub fix"
};
await context.Response.WriteAsJsonAsync(response);
}
}
}