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