namespace TeleWave.Application.Common.Interfaces; /// /// Локальное хранилище картинок метаданных (постеры/кадры) под metadata/ в корне хранилища. Скачивает /// изображения к себе, чтобы не зависеть от внешнего CDN на этапе показа. /// public interface IMetadataImageStore { /// Скачивает постер по URL и сохраняет для шоу. Возвращает относительный путь или null при ошибке. Task DownloadShowPosterAsync( Guid showId, string url, CancellationToken cancellationToken ); /// Сохраняет загруженный вручную постер шоу. Возвращает относительный путь. Task SaveShowPosterAsync( Guid showId, string extension, Stream content, CancellationToken cancellationToken ); void DeleteShowImages(Guid showId); /// Скачивает кадр серии по URL. Возвращает относительный путь или null при ошибке. Task DownloadEpisodeStillAsync( Guid episodeId, string url, CancellationToken cancellationToken ); void DeleteEpisodeImages(Guid episodeId); /// Абсолютный путь к файлу по относительному (с защитой от traversal) или null, если вне корня. string? ResolveAbsolutePath(string relativePath); }