Files
YandexMusic/YandexMusic.API/Common/AuthStorage.cs

81 lines
2.8 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 System.Net;
using YandexMusic.API.Models.Account;
namespace YandexMusic.API.Common;
/// <summary>
/// Хранилище данных авторизации. Не содержит HTTP-зависимостей.
/// </summary>
public class AuthStorage
{
private CookieContainer _cookieContainer;
public AuthStorage(CookieContainer cookieContainer)
{
_cookieContainer = cookieContainer;
}
public CookieContainer CookieContainer => _cookieContainer;
/// <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? HeaderToken { get; set; } = new();
/// <summary>
/// Внутренние данные авторизации (CSRF, track_id и т.д.).
/// </summary>
public YAuthToken? AuthToken { get; set; } = new();
/// <summary>
/// Страна, используемая для авторизации (по умолчанию "ru"). Может влиять на язык интерфейса и доступные методы авторизации.
/// </summary>
public object Country { get; set; } = "ru";
/// <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;
}
}