Полностью переписанное api
All checks were successful
Release / pack-and-publish (release) Successful in 36s
All checks were successful
Release / pack-and-publish (release) Successful in 36s
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user