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 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; if (errors != null) { errors.Add(err); } else { context.Items["Errors"] = new List { err }; } } context.Response.Body.Seek(0, SeekOrigin.Begin); await responseBody.CopyToAsync(originalBodyStream); context.Response.Body = originalBodyStream; } } }