43 lines
2.2 KiB
C#
43 lines
2.2 KiB
C#
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;
|
||
|
||
/// <summary>API для взаимодействия с главной страницей (лендингом).</summary>
|
||
public class YLandingAPI : YCommonAPI
|
||
{
|
||
/// <summary>Инициализирует новый экземпляр API лендинга.</summary>
|
||
/// <param name="yandex">Экземпляр основного API.</param>
|
||
public YLandingAPI(YandexMusicApi yandex) : base(yandex) { }
|
||
|
||
/// <summary>Получает персональные блоки лендинга.</summary>
|
||
/// <param name="storage">Хранилище авторизации.</param>
|
||
/// <param name="blocks">Типы запрашиваемых блоков.</param>
|
||
/// <returns>Ответ API с лендингом.</returns>
|
||
/// <exception cref="ArgumentNullException">Если массив blocks равен null.</exception>
|
||
public Task<YResponse<YLanding>> GetAsync(AuthStorage storage, params YLandingBlockType[] blocks)
|
||
{
|
||
if (blocks == null)
|
||
throw new ArgumentNullException(nameof(blocks), "Массив блоков не может быть null");
|
||
|
||
return new YGetLandingBuilder(api, storage)
|
||
.Build(blocks)
|
||
.GetResponseAsync();
|
||
}
|
||
|
||
/// <summary>Получает ленту событий (фид).</summary>
|
||
/// <param name="storage">Хранилище авторизации.</param>
|
||
/// <returns>Ответ API с лентой.</returns>
|
||
public Task<YResponse<YFeed>> GetFeedAsync(AuthStorage storage)
|
||
=> new YGetFeedBuilder(api, storage).Build(null!).GetResponseAsync();
|
||
|
||
/// <summary>Получает лендинг детского раздела.</summary>
|
||
/// <param name="storage">Хранилище авторизации.</param>
|
||
/// <returns>Ответ API с детским лендингом.</returns>
|
||
public Task<YResponse<YChildrenLanding>> GetChildrenLandingAsync(AuthStorage storage)
|
||
=> new YGetChildrenLandingBuilder(api, storage).Build(null!).GetResponseAsync();
|
||
} |