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(); }