123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- using System;
- using System.Buffers;
- using System.Threading.Tasks;
- using Luticate2.Utils.Controllers;
- using Luticate2.Utils.Dbo.Basic;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc.Formatters;
- using Microsoft.AspNetCore.Mvc.Infrastructure;
- using Newtonsoft.Json;
-
- namespace Luticate2.Utils.Middlewares
- {
- public class LuExceptionMiddleware
- {
- private readonly RequestDelegate _next;
-
- public LuExceptionMiddleware(RequestDelegate next)
- {
- _next = next;
- }
-
- public async Task Invoke(HttpContext context)
- {
- try
- {
- await _next.Invoke(context);
- }
- catch (LuResultException e)
- {
- var response = context.Response;
- response.ContentType = "application/json";
- response.StatusCode = e.Result.GetHttpCode();
- await response.WriteAsync(JsonConvert.SerializeObject(new LuApiWrapperDbo<object>
- {
- code = e.Result.GetHttpCode(),
- data = null,
- message = e.Result.PublicDetails
- })).ConfigureAwait(false);
- }
- catch (Exception e)//TODO
- {
- var response = context.Response;
- response.ContentType = "application/json";
- response.StatusCode = 500;
- await response.WriteAsync(JsonConvert.SerializeObject(new LuApiWrapperDbo<object>
- {
- code = 500,
- data = null,
- message = "Internal Error"
- })).ConfigureAwait(false);
- }
- }
- }
- }
|