@@ -26,86 +26,44 @@ public GitLabTestContextRequestOptions()
2626 : base ( retryCount : 0 , retryInterval : TimeSpan . FromSeconds ( 1 ) , isIncremental : true )
2727 {
2828 UserAgent = "NGitLab.Tests/1.0.0" ;
29- MessageHandler = new TestHttpMessageHandler ( this ) ;
29+ MessageHook = new TestHttpMessageHandler ( this ) ;
3030 }
3131
32- private sealed class TestHttpMessageHandler : IHttpMessageHandler
32+ private sealed class TestHttpMessageHandler : IHttpMessageHook
3333 {
3434 private readonly GitLabTestContextRequestOptions _options ;
3535 private readonly HttpClient _httpClient ;
36+ private HttpRequestMessage _currentRequest ;
3637
3738 public TestHttpMessageHandler ( GitLabTestContextRequestOptions options )
3839 {
3940 _options = options ;
4041 _httpClient = HttpClientManager . GetOrCreateHttpClient ( options ) ;
4142 }
4243
43- public HttpResponseMessage Send ( HttpRequestMessage request )
44+ public void BeforeSending ( HttpRequestMessage request )
4445 {
46+ _currentRequest = request ;
47+
4548 lock ( _options . _allRequests )
4649 {
4750 _options . _allRequests . Add ( request ) ;
4851 }
4952
50- HttpResponseMessage response = null ;
51-
5253 // GitLab is unstable, so let's make sure we don't overload it with many concurrent requests
5354 s_semaphoreSlim . Wait ( ) ;
54- try
55- {
56- try
57- {
58- response = _httpClient . Send ( request ) ;
59- }
60- catch ( HttpRequestException )
61- {
62- // Log the request even if it fails
63- _options . LogRequest ( request , response ) ;
64- throw ;
65- }
66-
67- _options . LogRequest ( request , response ) ;
68- }
69- finally
70- {
71- s_semaphoreSlim . Release ( ) ;
72- }
73-
74- return response ;
7555 }
7656
77- public async Task < HttpResponseMessage > SendAsync ( HttpRequestMessage request , CancellationToken cancellationToken = default )
57+ public void AfterReceived ( HttpResponseMessage response )
7858 {
79- lock ( _options . _allRequests )
80- {
81- _options . _allRequests . Add ( request ) ;
82- }
83-
84- HttpResponseMessage response = null ;
85-
86- // GitLab is unstable, so let's make sure we don't overload it with many concurrent requests
87- await s_semaphoreSlim . WaitAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
8859 try
8960 {
90- try
91- {
92- response = await _httpClient . SendAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
93- }
94- catch ( HttpRequestException )
95- {
96- // Log the request even if it fails
97- await _options . LogRequestAsync ( request , response ) . ConfigureAwait ( false ) ;
98- throw ;
99- }
100-
101- await _options . LogRequestAsync ( request , response ) . ConfigureAwait ( false ) ;
61+ _options . LogRequest ( _currentRequest , response ) ;
10262 }
10363 finally
10464 {
10565 s_semaphoreSlim . Release ( ) ;
10666 }
107-
108- return response ;
10967 }
11068 }
11169
0 commit comments