namespace YandexMusic.API;
/// Главный класс API Яндекс Музыки. Предоставляет доступ ко всем веткам API.
public class YandexMusicApi
{
/// API для работы с альбомами.
public YAlbumAPI Album { get; internal set; } = null!;
/// API для работы с исполнителями.
public YArtistAPI Artist { get; internal set; } = null!;
/// API для работы с лейблами.
public YLabelAPI Label { get; internal set; } = null!;
/// API для работы с главной страницей (лендингом).
public YLandingAPI Landing { get; internal set; } = null!;
/// API для работы с библиотекой (лайки, дизлайки).
public YLibraryAPI Library { get; internal set; } = null!;
/// API для работы с плейлистами.
public YPlaylistAPI Playlist { get; internal set; } = null!;
/// API для работы с закреплёнными объектами.
public YPinsAPI Pins { get; internal set; } = null!;
/// API для работы с радио.
public YRadioAPI Radio { get; internal set; } = null!;
/// API для поиска.
public YSearchAPI Search { get; internal set; } = null!;
/// API для работы с треками.
public YTrackAPI Track { get; internal set; } = null!;
/// API для работы с очередями.
public YQueueAPI Queue { get; internal set; } = null!;
/// API для работы с пользователем и авторизацией.
public YUserAPI User { get; internal set; } = null!;
/// API для загрузки пользовательского контента.
public YUgcAPI UserGeneratedContent { get; internal set; } = null!;
/// API для работы с протоколом Ynison (WebSocket).
public YYnisonAPI Ynison { get; internal set; } = null!;
/// Создаёт экземпляр API с инициализацией всех подсистем.
public YandexMusicApi()
{
foreach (var property in GetType().GetProperties())
property.SetValue(this, Activator.CreateInstance(property.PropertyType, this));
}
}