namespace TeleWave.Application.Streaming;

/// <summary>Параметры раздачи эфира. Биндится к секции «Storage» (общая с обработкой медиа).</summary>
public sealed class StreamingOptions
{
    public const string SectionName = "Storage";

    public int SegmentSeconds { get; init; } = 2;

    /// <summary>Сколько сегментов держать в скользящем окне live-плейлиста.</summary>
    public int LiveWindowSegments { get; init; } = 10;

    /// <summary>TTL stream-токена (cookie tw_stream), минуты. Короткий срок ограничивает окно доступа
    /// после блокировки/логаута; фронт перевыпускает cookie через /watch, пока идёт просмотр. Блокировка
    /// пользователя при этом отражается почти сразу — при очередной перезагрузке live-плейлиста.</summary>
    public int StreamTokenMinutes { get; init; } = 30;

    /// <summary>
    /// Срок жизни токена в IPTV-плейлисте, сутки. Внешний плеер не умеет ни JWT, ни cookie, поэтому
    /// пропуск зашит прямо в ссылки файла — и живёт он ровно столько, сколько тут указано. Отозвать
    /// отдельный файл нечем: помогает блокировка зрителя (её сверяет плейлист канала) и смена
    /// <c>Jwt:SigningKey</c>, которая обнуляет разом все выданные.
    /// </summary>
    public int IptvTokenDays { get; init; } = 30;
}
