using YandexMusic.API.Common;
using YandexMusic.API.Models.Album;
using YandexMusic.API.Models.Common;
using YandexMusic.API.Requests.Album;

namespace YandexMusic.API;

/// <summary>API для работы с альбомами.</summary>
public class YAlbumAPI : YCommonAPI
{
    /// <summary>Инициализирует новый экземпляр API альбомов.</summary>
    /// <param name="yandex">Экземпляр основного API.</param>
    public YAlbumAPI(YandexMusicApi yandex) : base(yandex) { }

    /// <summary>Получает альбом по идентификатору.</summary>
    /// <param name="storage">Хранилище данных авторизации.</param>
    /// <param name="albumId">Идентификатор альбома.</param>
    /// <returns>Ответ API с моделью альбома.</returns>
    public Task<YResponse<YAlbum>> GetAsync(AuthStorage storage, string albumId)
        => new YGetAlbumBuilder(api, storage).Build(albumId).GetResponseAsync();

    /// <summary>Получает несколько альбомов по списку идентификаторов.</summary>
    /// <param name="storage">Хранилище данных авторизации.</param>
    /// <param name="albumIds">Список идентификаторов альбомов.</param>
    /// <returns>Ответ API со списком альбомов.</returns>
    public Task<YResponse<List<YAlbum>>> GetAsync(AuthStorage storage, IEnumerable<string> albumIds)
        => new YGetAlbumsBuilder(api, storage).Build(albumIds).GetResponseAsync();
}