using Galaeth.ApiServer.Constants; using Galaeth.Core.Constants; namespace Galaeth.ApiServer.Middleware; /// /// Handle status code responses. /// public class StatusCodeMiddleware { private readonly RequestDelegate _next; /// /// Initializes a new instance of the class. /// /// Instance of . public StatusCodeMiddleware(RequestDelegate next) { _next = next; } /// /// Invoke middleware. /// /// Instance of . public Task Invoke(HttpContext context) => InvokeAsync(context); private async Task InvokeAsync(HttpContext context) { await _next(context); switch (context.Response.StatusCode) { case 401: context.Response.Headers.Clear(); context.Response.ContentType = "text/json"; await context.Response.WriteAsJsonAsync(new { Success = false, Error = CoreErrorCodes.Unauthorized, Message = "You're not authorized to do that", }); break; case 404: context.Response.Headers.Clear(); context.Response.ContentType = "text/json"; await context.Response.WriteAsJsonAsync(new { Success = false, Error = ApiErrorCodes.UnknownMethod, Message = "Unknown method", }); break; case 405: context.Response.Headers.Clear(); context.Response.ContentType = "text/json"; await context.Response.WriteAsJsonAsync(new { Success = false, Error = ApiErrorCodes.IllegalMethod, Message = "Illegal method", }); break; case 415: context.Response.Headers.Clear(); context.Response.ContentType = "text/json"; await context.Response.WriteAsJsonAsync(new { Success = false, Error = ApiErrorCodes.UnsupportedBody, Message = "Unsupported body/media type", }); break; case 500: context.Response.Headers.Clear(); context.Response.ContentType = "text/json"; await context.Response.WriteAsJsonAsync(new { Success = false, Error = ApiErrorCodes.UnknownError, Message = "Unknown error", }); break; } } }