Полностью переписанное 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

@@ -0,0 +1,47 @@
using System.Net;
namespace YandexMusic.API.Common;
/// <summary>
/// Фабрика для создания стандартного HttpClient с поддержкой кук, прокси и автоматической декомпрессией.
/// </summary>
public static class YandexMusicHttpClientFactory
{
/// <summary>
/// Создаёт стандартный HttpClient с автоматическим управлением куками.
/// </summary>
/// <param name="proxy">Прокси-сервер (опционально).</param>
/// <param name="timeout">Таймаут запросов (по умолчанию 30 секунд).</param>
/// <param name="userAgent">User-Agent (по умолчанию как у браузера Chrome).</param>
/// <returns>Настроенный HttpClient.</returns>
public static HttpClient CreateDefault(
CookieContainer? cookieContainer = null,
IWebProxy? proxy = null,
TimeSpan? timeout = null,
string? userAgent = null)
{
var handler = new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
UseCookies = true,
CookieContainer = cookieContainer ?? new CookieContainer(),
AllowAutoRedirect = true,
MaxAutomaticRedirections = 10,
Proxy = proxy,
UseProxy = proxy != null
};
var client = new HttpClient(handler, disposeHandler: true)
{
Timeout = timeout ?? TimeSpan.FromSeconds(30)
};
// Стандартный User-Agent, похожий на браузерный
client.DefaultRequestHeaders.Add("User-Agent",
userAgent ?? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36");
client.DefaultRequestHeaders.Add("Accept", "*/*");
client.DefaultRequestHeaders.Add("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8");
return client;
}
}