using YandexMusic.API.Common;
using YandexMusic.API.Models.Common;
using YandexMusic.API.Models.Feed;
using YandexMusic.API.Models.Landing;
using YandexMusic.API.Requests.Feed;
using YandexMusic.API.Requests.Landing;
namespace YandexMusic.API;
/// API для взаимодействия с главной страницей (лендингом).
public class YLandingAPI : YCommonAPI
{
/// Инициализирует новый экземпляр API лендинга.
/// Экземпляр основного API.
public YLandingAPI(YandexMusicApi yandex) : base(yandex) { }
/// Получает персональные блоки лендинга.
/// Хранилище авторизации.
/// Типы запрашиваемых блоков.
/// Ответ API с лендингом.
/// Если массив blocks равен null.
public Task> GetAsync(AuthStorage storage, params YLandingBlockType[] blocks)
{
if (blocks == null)
throw new ArgumentNullException(nameof(blocks), "Массив блоков не может быть null");
return new YGetLandingBuilder(api, storage)
.Build(blocks)
.GetResponseAsync();
}
/// Получает ленту событий (фид).
/// Хранилище авторизации.
/// Ответ API с лентой.
public Task> GetFeedAsync(AuthStorage storage)
=> new YGetFeedBuilder(api, storage).Build(null!).GetResponseAsync();
/// Получает лендинг детского раздела.
/// Хранилище авторизации.
/// Ответ API с детским лендингом.
public Task> GetChildrenLandingAsync(AuthStorage storage)
=> new YGetChildrenLandingBuilder(api, storage).Build(null!).GetResponseAsync();
}