using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Streaming; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace ErsatzTV.Controllers; public class TrackedFileStreamResult( Stream fileStream, string contentType, IDirectStreamSessionTracker directStreamSessionTracker, string channelNumber, StreamingMode streamingMode) : FileStreamResult(fileStream, contentType) { public override async Task ExecuteResultAsync(ActionContext context) { if (HttpMethods.IsHead(context.HttpContext.Request.Method)) { await base.ExecuteResultAsync(context); return; } using IDisposable registration = directStreamSessionTracker.Register(channelNumber, streamingMode); await base.ExecuteResultAsync(context); } }