namespace TeleWave.Infrastructure.Metadata;

public sealed class MetadataOptions
{
    public const string SectionName = "Metadata";

    /// <summary>Язык метаданных (ISO, например «ru-RU»).</summary>
    public string Language { get; init; } = "ru-RU";

    public TmdbOptions Tmdb { get; init; } = new();
    public OmdbOptions Omdb { get; init; } = new();
}

public sealed class TmdbOptions
{
    public string ApiKey { get; init; } = string.Empty;
    public string BaseUrl { get; init; } = "https://api.themoviedb.org/3";
    public string ImageBaseUrl { get; init; } = "https://image.tmdb.org/t/p";
    public string PosterSize { get; init; } = "w500";
    public string StillSize { get; init; } = "w300";

    /// <summary>
    /// Страны сертификации в порядке приоритета: берём первую, для которой у шоу есть рейтинг.
    /// US впереди намеренно — его шкала совпадает с нашей и переводится точно, тогда как RU
    /// (0+…18+) приводится приблизительно (см. ContentRating) и нужен ради покрытия там,
    /// где американской сертификации у контента нет и не было.
    /// </summary>
    public IReadOnlyList<string> CertificationCountries { get; init; } = ["US", "RU"];
}

public sealed class OmdbOptions
{
    public string ApiKey { get; init; } = string.Empty;
    public string BaseUrl { get; init; } = "https://www.omdbapi.com";
}
