Полностью переписанное api
All checks were successful
Release / pack-and-publish (release) Successful in 36s

This commit is contained in:
FrigaT
2026-04-19 17:00:05 +03:00
parent 5541d0ad27
commit 36e28ce3fe
111 changed files with 1552 additions and 3358 deletions

View File

@@ -1,80 +1,61 @@
using System.Net;
using YandexMusic.API.Common.Providers;
using YandexMusic.API.Models.Account;
using YandexMusic.API.Requests.Common;
namespace YandexMusic.API.Common;
/// <summary>
/// Хранилище данных пользователя
/// Хранилище данных авторизации. Не содержит HTTP-зависимостей.
/// </summary>
public class AuthStorage
{
/// <summary>
/// Http-контекст
/// </summary>
public HttpContext Context { get; }
/// <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; }
public string Token { get; internal set; } = string.Empty;
/// <summary>
/// Аккаунт
/// Информация об аккаунте пользователя.
/// </summary>
public YAccount User { get; set; }
public YAccount User { get; internal set; } = new();
/// <summary>
/// Провайдер запросов
/// Временный токен доступа (используется в некоторых сценариях авторизации).
/// </summary>
public IRequestProvider Provider { get; }
public YAccessToken AccessToken { get; internal set; } = new();
/// <summary>
/// Токен доступа
/// Внутренние данные авторизации (CSRF, track_id и т.д.).
/// </summary>
public YAccessToken AccessToken { get; set; }
internal YAuthToken AuthToken { get; set; }
internal YAuthToken AuthToken { get; set; } = new();
/// <summary>
/// Конструктор
/// Устанавливает флаг авторизации и сохраняет информацию об аккаунте.
/// </summary>
public AuthStorage(IRequestProvider provider)
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();
Context = new HttpContext();
Provider = provider;
Token = string.Empty;
AccessToken = new YAccessToken();
AuthToken = new YAuthToken();
IsAuthorized = false;
}
/// <summary>
/// Конструктор
/// </summary>
public AuthStorage()
{
User = new YAccount();
Context = new HttpContext();
Provider = new DefaultRequestProvider(this);
}
/// <summary>
/// Установка прокси для пользователия
/// </summary>
/// <param name="proxy">Прокси</param>
public void SetProxy(IWebProxy proxy)
{
Context.WebProxy = proxy;
}
}