A3-Dot_Net/Assignment3/Middleware/ErrorlogMiddleware.cs
2025-03-23 00:12:27 -04:00

52 lines
1.7 KiB
C#

using Assignment3.Models;
using Microsoft.AspNetCore.Mvc;
using System.Text.Json;
namespace Assignment3.Middleware
{
public class ErrorlogMiddleware
{
private readonly ILogger _logger;
private readonly RequestDelegate next;
public ErrorlogMiddleware(RequestDelegate next, ILogger<ErrorlogMiddleware> logger)
{
this.next = next;
this._logger = logger;
}
public async Task Invoke(HttpContext context)
{
var originalBodyStream = context.Response.Body;
using var responseBody = new MemoryStream();
context.Response.Body = responseBody;
await this.next(context);
context.Response.Body.Seek(0, SeekOrigin.Begin);
var responseText = await new StreamReader(context.Response.Body).ReadToEndAsync();
if (context.Response.StatusCode != 200)
{
Error err = new Error();
err.status = context.Response.StatusCode;
err.Message = "This needs to be populated...";
Console.WriteLine("Error Detected, writing to Database.");
var errors = context.Items["Error"] as List<Error>;
if (errors != null)
{
errors.Add(err);
}
else
{
context.Items["Errors"] = new List<Error> { err };
}
}
context.Response.Body.Seek(0, SeekOrigin.Begin);
await responseBody.CopyToAsync(originalBodyStream);
context.Response.Body = originalBodyStream;
}
}
}