@@ -6,9 +6,17 @@ namespace HyPlayer.NeteaseApi;
66
77public 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