52 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|
|
} |