Files
YandexMusic/YandexMusic.API/Common/AuthStorage.cs
FrigaT 36e28ce3fe
All checks were successful
Release / pack-and-publish (release) Successful in 36s
Полностью переписанное api
2026-04-19 17:00:05 +03:00

61 lines
2.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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>
internal 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;
}
}