void.cat/VoidCat/Services/Analytics/AnalyticsMiddleware.cs
2022-09-07 12:40:52 +01:00

32 lines
863 B
C#

using VoidCat.Services.Abstractions;
namespace VoidCat.Services.Analytics;
public class AnalyticsMiddleware : IMiddleware
{
private readonly ILogger<AnalyticsMiddleware> _logger;
private readonly IEnumerable<IWebAnalyticsCollector> _collectors;
public AnalyticsMiddleware(IEnumerable<IWebAnalyticsCollector> collectors, ILogger<AnalyticsMiddleware> logger)
{
_collectors = collectors;
_logger = logger;
}
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
foreach (var collector in _collectors)
{
try
{
await collector.TrackPageView(context);
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to track page view");
}
}
await next(context);
}
}