using YandexMusic.API.Common; namespace YandexMusic.API; /// Главный класс API Яндекс Музыки. Предоставляет доступ ко всем веткам API. public class YandexMusicApi { /// HttpClient, используемый для всех запросов. internal HttpClient HttpClient { get; } /// Хранилище данных авторизации. internal AuthStorage Storage { get; } /// 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 YAuthAPI Auth { get; internal set; } = null!; /// API для загрузки пользовательского контента. public YUgcAPI UserGeneratedContent { get; internal set; } = null!; /// API для работы с протоколом Ynison (WebSocket). public YYnisonAPI Ynison { get; internal set; } = null!; /// API для работы с яндекс пасспорт. public YPassportAPI Passport { get; internal set; } = null!; /// /// Инициализирует новый экземпляр API. /// /// HttpClient для выполнения запросов. /// Хранилище авторизации. public YandexMusicApi(HttpClient httpClient, AuthStorage storage) { HttpClient = httpClient ?? throw new ArgumentNullException(nameof(httpClient)); Storage = storage ?? throw new ArgumentNullException(nameof(storage)); Album = new(this); Artist = new(this); Label = new(this); Landing = new(this); Library = new(this); Playlist = new(this); Pins = new(this); Radio = new(this); Search = new(this); Track = new(this); Queue = new(this); Auth = new(this); UserGeneratedContent = new(this); Ynison = new(this); Passport = new(this); } }