1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-06-07 16:06:15 +00:00

Fix for proxy when not using DI

This commit is contained in:
JKorf 2023-07-23 10:01:13 +02:00
parent 3cbe0465e9
commit f11b3754f0
3 changed files with 25 additions and 6 deletions

View File

@ -71,7 +71,7 @@ namespace CryptoExchange.Net
rateLimiters.Add(rateLimiter); rateLimiters.Add(rateLimiter);
RateLimiters = rateLimiters; RateLimiters = rateLimiters;
RequestFactory.Configure(options.RequestTimeout, httpClient); RequestFactory.Configure(options.Proxy, options.RequestTimeout, httpClient);
} }
/// <summary> /// <summary>

View File

@ -1,4 +1,5 @@
using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Options;
using System; using System;
using System.Net.Http; using System.Net.Http;
@ -23,6 +24,7 @@ namespace CryptoExchange.Net.Interfaces
/// </summary> /// </summary>
/// <param name="requestTimeout">Request timeout to use</param> /// <param name="requestTimeout">Request timeout to use</param>
/// <param name="httpClient">Optional shared http client instance</param> /// <param name="httpClient">Optional shared http client instance</param>
void Configure(TimeSpan requestTimeout, HttpClient? httpClient=null); /// <param name="proxy">Optional proxy to use when no http client is provided</param>
void Configure(ApiProxy? proxy, TimeSpan requestTimeout, HttpClient? httpClient=null);
} }
} }

View File

@ -1,8 +1,10 @@
using System; using System;
using System.Net; using System.Net;
using System.Net.Http; using System.Net.Http;
using System.Runtime.InteropServices;
using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Options;
namespace CryptoExchange.Net.Requests namespace CryptoExchange.Net.Requests
{ {
@ -14,14 +16,29 @@ namespace CryptoExchange.Net.Requests
private HttpClient? _httpClient; private HttpClient? _httpClient;
/// <inheritdoc /> /// <inheritdoc />
public void Configure(TimeSpan requestTimeout, HttpClient? client = null) public void Configure(ApiProxy? proxy, TimeSpan requestTimeout, HttpClient? client = null)
{ {
_httpClient = client ?? new HttpClient() if (client == null)
{
var handler = new HttpClientHandler();
if (proxy != null)
{
handler.Proxy = new WebProxy
{
Address = new Uri($"{proxy.Host}:{proxy.Port}"),
Credentials = proxy.Password == null ? null : new NetworkCredential(proxy.Login, proxy.Password)
};
}
client = new HttpClient(handler)
{ {
Timeout = requestTimeout Timeout = requestTimeout
}; };
} }
_httpClient = client;
}
/// <inheritdoc /> /// <inheritdoc />
public IRequest Create(HttpMethod method, Uri uri, int requestId) public IRequest Create(HttpMethod method, Uri uri, int requestId)
{ {