Skip to content

Commit fe6fa88

Browse files
[HttpClient] Allow Sharing HttpClient With Main Program
1 parent be10ad1 commit fe6fa88

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

HyPlayer.NeteaseApi/NeteaseCloudMusicApiHandler.cs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,17 @@ namespace HyPlayer.NeteaseApi;
66

77
public class NeteaseCloudMusicApiHandler
88
{
9+
public NeteaseCloudMusicApiHandler()
10+
{
11+
HttpClient = new HttpClient();
12+
}
13+
public NeteaseCloudMusicApiHandler(HttpClient httpClient)
14+
{
15+
HttpClient = httpClient;
16+
}
917
public ApiHandlerOption Option { get; set; } = new();
10-
11-
private readonly HttpClientHandler _httpClientHandler =
18+
public HttpClient HttpClient { get; set; }
19+
public static readonly HttpClientHandler HttpClientHandler =
1220
new()
1321
{
1422
UseCookies = false,
@@ -17,17 +25,16 @@ public class NeteaseCloudMusicApiHandler
1725

1826
public void UseProxyConfiguration(bool useProxy, IWebProxy proxy)
1927
{
20-
_httpClientHandler.UseProxy = useProxy;
21-
_httpClientHandler.Proxy = proxy;
28+
HttpClientHandler.UseProxy = useProxy;
29+
HttpClientHandler.Proxy = proxy;
2230
}
2331

2432
public async Task<Results<TResponse, ErrorResultBase>> RequestAsync<TRequest, TResponse, TError, TActualRequest>(
2533
ApiContractBase<TRequest, TResponse, TError, TActualRequest> contract, CancellationToken cancellationToken = default)
2634
where TError : ErrorResultBase where TActualRequest : ActualRequestBase where TRequest : RequestBase where TResponse : ResponseBase, new()
2735
{
28-
var client = new HttpClient(_httpClientHandler);
2936
using var requestMessage = await contract.GenerateRequestMessageAsync(Option, cancellationToken);
30-
using var response = await client.SendAsync(requestMessage,
37+
using var response = await HttpClient.SendAsync(requestMessage,
3138
cancellationToken).ConfigureAwait(false);
3239
return await contract.ProcessResponseAsync(response, Option, cancellationToken).ConfigureAwait(false);
3340
}
@@ -36,33 +43,30 @@ public async Task<Results<TResponse, ErrorResultBase>> RequestAsync<TRequest, TR
3643
ApiContractBase<TRequest, TResponse, TError, TActualRequest> contract, TRequest? request, CancellationToken cancellationToken = default)
3744
where TError : ErrorResultBase where TActualRequest : ActualRequestBase where TRequest : RequestBase where TResponse : ResponseBase, new()
3845
{
39-
var client = new HttpClient(_httpClientHandler);
4046
contract.Request = request;
4147
await contract.MapRequest().ConfigureAwait(false);
4248
using var requestMessage = await contract.GenerateRequestMessageAsync(Option, cancellationToken).ConfigureAwait(false);
43-
using var response = await client.SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);
49+
using var response = await HttpClient.SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);
4450
return await contract.ProcessResponseAsync(response, Option, cancellationToken).ConfigureAwait(false);
4551
}
4652

4753
public async Task<Results<TCustomResponse, ErrorResultBase>> RequestAsync<TCustomResponse, TRequest, TResponse, TError, TActualRequest>(
4854
ApiContractBase<TRequest, TResponse, TError, TActualRequest> contract, TRequest? request, CancellationToken cancellationToken = default)
4955
where TError : ErrorResultBase where TActualRequest : ActualRequestBase where TRequest : RequestBase where TCustomResponse : ResponseBase, new() where TResponse : ResponseBase, new()
5056
{
51-
var client = new HttpClient(_httpClientHandler);
5257
contract.Request = request;
5358
await contract.MapRequest().ConfigureAwait(false);
5459
using var requestMessage = await contract.GenerateRequestMessageAsync(Option, cancellationToken).ConfigureAwait(false);
55-
using var response = await client.SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);
60+
using var response = await HttpClient.SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);
5661
return await contract.ProcessResponseAsync<TCustomResponse>(response, Option, cancellationToken).ConfigureAwait(false);
5762
}
5863

5964
public async Task<Results<TCustomResponse, ErrorResultBase>> RequestAsync<TCustomRequest, TCustomResponse, TRequest, TResponse, TError, TActualRequest>(
6065
ApiContractBase<TRequest, TResponse, TError, TActualRequest> contract, TCustomRequest? request, CancellationToken cancellationToken = default)
6166
where TError : ErrorResultBase where TActualRequest : ActualRequestBase where TRequest : RequestBase where TResponse : ResponseBase, new() where TCustomResponse : ResponseBase, new()
6267
{
63-
var client = new HttpClient(_httpClientHandler);
6468
using var requestMessage = await contract.GenerateRequestMessageAsync<TCustomRequest>(request!, Option, cancellationToken).ConfigureAwait(false);
65-
using var response = await client.SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);
69+
using var response = await HttpClient.SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);
6670
return await contract.ProcessResponseAsync<TCustomResponse>(response, Option, cancellationToken).ConfigureAwait(false);
6771
}
6872

@@ -71,9 +75,8 @@ public async Task<Results<TResponse, ErrorResultBase>> RequestAsync<TCustomReque
7175
ApiHandlerOption option, CancellationToken cancellationToken = default)
7276
where TError : ErrorResultBase where TActualRequest : ActualRequestBase where TRequest : RequestBase where TResponse : ResponseBase, new()
7377
{
74-
var client = new HttpClient(_httpClientHandler);
7578
using var requestMessage = await contract.GenerateRequestMessageAsync<TCustomRequest>(request!, option, cancellationToken);
76-
using var response = await client.SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);
79+
using var response = await HttpClient.SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);
7780
return await contract.ProcessResponseAsync(response, option, cancellationToken).ConfigureAwait(false);
7881
}
7982
}

0 commit comments

Comments
 (0)