using YandexMusic.API.Models.Account; namespace YandexMusic.API.Common; /// /// Хранилище данных авторизации. Не содержит HTTP-зависимостей. /// public class AuthStorage { /// /// Флаг, указывающий, авторизован ли пользователь. /// public bool IsAuthorized { get; internal set; } /// /// Идентификатор устройства (используется в заголовках). /// public string DeviceId { get; set; } = "csharp"; /// /// OAuth-токен для доступа к API. /// public string Token { get; internal set; } = string.Empty; /// /// Информация об аккаунте пользователя. /// public YAccount User { get; internal set; } = new(); /// /// Временный токен доступа (используется в некоторых сценариях авторизации). /// public YAccessToken AccessToken { get; internal set; } = new(); /// /// Внутренние данные авторизации (CSRF, track_id и т.д.). /// internal YAuthToken AuthToken { get; set; } = new(); /// /// Устанавливает флаг авторизации и сохраняет информацию об аккаунте. /// internal void SetAuthorized(YAccount user, string token) { User = user ?? throw new ArgumentNullException(nameof(user)); Token = token ?? throw new ArgumentNullException(nameof(token)); IsAuthorized = true; } /// /// Сбрасывает состояние авторизации. /// internal void ResetAuthorization() { User = new YAccount(); Token = string.Empty; AccessToken = new YAccessToken(); AuthToken = new YAuthToken(); IsAuthorized = false; } }