using System.Globalization; using System.Text; using LiteCqrs; using Microsoft.Extensions.Hosting; using TeleWave.Api.Common; using TeleWave.Application.Common.Interfaces; using TeleWave.Application.Streaming; using TeleWave.Application.Streaming.GetLivePlaylist; using TeleWave.Application.Streaming.GetPublicEpg; using TeleWave.Application.Streaming.ListPublicChannels; using TeleWave.Infrastructure.Media; using TeleWave.Infrastructure.Streaming; namespace TeleWave.Api.Endpoints; public static class StreamingEndpoints { private const string StreamCookieName = "tw_stream"; public static IEndpointRouteBuilder MapStreamingEndpoints(this IEndpointRouteBuilder app) { // Публичный API канала (Bearer): список, EPG, выдача stream-cookie. var channels = app.MapGroup("/api/channels").WithTags("Channels").RequireAuthorization(); channels.MapGet("", ListChannels).Produces>(); // Что включено на стороне зрителя: сейчас только переключение по номерам (см. 6.8). channels.MapGet("/features", ViewerFeatures).Produces(); channels.MapPost("/{slug}/watch", Watch).Produces(StatusCodes.Status204NoContent); channels.MapGet("/{slug}/epg", Epg); // Раздача эфира (cookie tw_stream): плейлист и сегменты — их грузит