@@ -76,10 +76,8 @@ internal ElasticsearchClient(HttpTransport<IElasticsearchClientSettings> transpo
7676
7777 public IElasticsearchClientSettings ElasticsearchClientSettings => _transport . Settings ;
7878 public Inferrer Infer => _transport . Settings . Inferrer ;
79-
8079 public Serializer RequestResponseSerializer => _transport . Settings . RequestResponseSerializer ;
8180 public Serializer SourceSerializer => _transport . Settings . SourceSerializer ;
82-
8381 public HttpTransport Transport => _transport ;
8482
8583 private ProductCheckStatus _productCheckStatus ;
@@ -93,83 +91,15 @@ private enum ProductCheckStatus
9391
9492 private partial void SetupNamespaces ( ) ;
9593
96- internal TResponse DoRequest < TRequest , TResponse , TRequestParameters > (
97- TRequest request ,
98- TRequestParameters ? parameters ,
99- Action < IRequestConfiguration > ? forceConfiguration = null )
94+ internal TResponse DoRequest < TRequest , TResponse , TRequestParameters > ( TRequest request )
10095 where TRequest : Request < TRequestParameters >
10196 where TResponse : ElasticsearchResponse , new ( )
102- where TRequestParameters : RequestParameters , new ( )
103- {
104- if ( _productCheckStatus == ProductCheckStatus . Failed )
105- throw new UnsupportedProductException ( UnsupportedProductException . InvalidProductError ) ;
106-
107- var requestModified = false ;
108- var hadRequestConfig = false ;
109- HeadersList ? originalHeaders = null ;
110-
111- // If we have not yet checked the product name, add the product header to the list of headers to parse.
112- if ( _productCheckStatus == ProductCheckStatus . NotChecked )
113- {
114- requestModified = true ;
115- if ( request . RequestParameters . RequestConfiguration is null )
116- {
117- request . RequestParameters . RequestConfiguration = new RequestConfiguration ( ) ;
118- }
119- else
120- {
121- originalHeaders = request . RequestParameters . RequestConfiguration . ResponseHeadersToParse ;
122- hadRequestConfig = true ;
123- }
124-
125- if ( request . RequestParameters . RequestConfiguration . ResponseHeadersToParse . Count == 0 )
126- {
127- request . RequestParameters . RequestConfiguration . ResponseHeadersToParse = new HeadersList ( "x-elastic-product" ) ;
128- }
129- else
130- {
131- request . RequestParameters . RequestConfiguration . ResponseHeadersToParse = new HeadersList ( request . RequestParameters . RequestConfiguration . ResponseHeadersToParse , "x-elastic-product" ) ;
132- }
133- }
134-
135- var ( resolvedUrl , urlTemplate , postData ) = PrepareRequest < TRequest , TRequestParameters > ( request , forceConfiguration ) ;
136-
137- TResponse response ;
138-
139- using ( var activity = _activitySource . StartActivity ( $ "Elasticsearch: { request . HttpMethod } { urlTemplate } ", ActivityKind . Client ) )
140- {
141- activity ? . SetTag ( "db.system" , "elasticsearch" ) ;
142- activity ? . SetCustomProperty ( "elastic.transport.client" , true ) ;
143-
144- response = _transport . Request < TResponse > ( request . HttpMethod , resolvedUrl , postData , request . RequestParameters ) ;
145-
146- if ( response . ApiCallDetails . RequestBodyInBytes is not null )
147- activity ? . SetTag ( "db.statement" , System . Text . Encoding . UTF8 . GetString ( response . ApiCallDetails . RequestBodyInBytes ) ) ;
148- }
149-
150- PostRequestProductCheck < TRequest , TResponse > ( request , response ) ;
151-
152- if ( _productCheckStatus == ProductCheckStatus . Failed )
153- throw new UnsupportedProductException ( UnsupportedProductException . InvalidProductError ) ;
154-
155- if ( requestModified )
156- {
157- if ( ! hadRequestConfig )
158- {
159- request . RequestParameters . RequestConfiguration = null ;
160- }
161- else if ( originalHeaders . HasValue && originalHeaders . Value . Count > 0 )
162- {
163- request . RequestParameters . RequestConfiguration . ResponseHeadersToParse = originalHeaders . Value ;
164- }
165- }
166-
167- return response ;
168- }
97+ where TRequestParameters : RequestParameters , new ( ) =>
98+ DoRequest < TRequest , TResponse , TRequestParameters > ( request , null ) ;
16999
170100 internal TResponse DoRequest < TRequest , TResponse , TRequestParameters > (
171101 TRequest request ,
172- Action < IRequestConfiguration > ? forceConfiguration = null )
102+ Action < IRequestConfiguration > ? forceConfiguration )
173103 where TRequest : Request < TRequestParameters >
174104 where TResponse : ElasticsearchResponse , new ( )
175105 where TRequestParameters : RequestParameters , new ( )
@@ -240,175 +170,17 @@ internal TResponse DoRequest<TRequest, TResponse, TRequestParameters>(
240170 return response ;
241171 }
242172
243- internal Task < TResponse > DoRequestAsync < TRequest , TResponse , TRequestParameters > (
244- TRequest request ,
245- RequestParameters ? parameters ,
246- CancellationToken cancellationToken = default )
247- where TRequest : Request < TRequestParameters >
248- where TResponse : ElasticsearchResponse , new ( )
249- where TRequestParameters : RequestParameters , new ( )
250- {
251- if ( _productCheckStatus == ProductCheckStatus . Failed )
252- throw new UnsupportedProductException ( UnsupportedProductException . InvalidProductError ) ;
253-
254- var requestModified = false ;
255- var hadRequestConfig = false ;
256- HeadersList ? originalHeaders = null ;
257-
258- // If we have not yet checked the product name, add the product header to the list of headers to parse.
259- if ( _productCheckStatus == ProductCheckStatus . NotChecked )
260- {
261- requestModified = true ;
262-
263- if ( request . RequestParameters . RequestConfiguration is null )
264- {
265- request . RequestParameters . RequestConfiguration = new RequestConfiguration ( ) ;
266- }
267- else
268- {
269- originalHeaders = request . RequestParameters . RequestConfiguration . ResponseHeadersToParse ;
270- hadRequestConfig = true ;
271- }
272-
273- if ( request . RequestParameters . RequestConfiguration . ResponseHeadersToParse . Count == 0 )
274- {
275- request . RequestParameters . RequestConfiguration . ResponseHeadersToParse = new HeadersList ( "x-elastic-product" ) ;
276- }
277- else
278- {
279- request . RequestParameters . RequestConfiguration . ResponseHeadersToParse = new HeadersList ( request . RequestParameters . RequestConfiguration . ResponseHeadersToParse , "x-elastic-product" ) ;
280- }
281- }
282-
283- var ( resolvedUrl , urlTemplate , postData ) = PrepareRequest < TRequest , TRequestParameters > ( request , null ) ;
284-
285- if ( _productCheckStatus == ProductCheckStatus . Succeeded && ! requestModified && ! _activitySource . HasListeners ( ) )
286- return _transport . RequestAsync < TResponse > ( request . HttpMethod , resolvedUrl , postData , parameters , cancellationToken ) ;
287-
288- return SendRequest ( request , parameters , resolvedUrl , postData , hadRequestConfig , originalHeaders ) ;
289-
290- async Task < TResponse > SendRequest ( TRequest request , RequestParameters ? parameters , string url , PostData postData , bool hadRequestConfig , HeadersList ? originalHeaders )
291- {
292- TResponse response ;
293-
294- using ( var activity = _activitySource . StartActivity ( $ "Elasticsearch: { request . HttpMethod } { urlTemplate } ", ActivityKind . Client ) )
295- {
296- activity ? . AddTag ( "db.system" , "elasticsearch" ) ;
297- activity ? . SetCustomProperty ( "elastic.transport.client" , true ) ;
298-
299- response = await _transport . RequestAsync < TResponse > ( request . HttpMethod , url , postData , parameters ) . ConfigureAwait ( false ) ;
300-
301- if ( response . ApiCallDetails . RequestBodyInBytes is not null )
302- activity ? . AddTag ( "db.statement" , System . Text . Encoding . UTF8 . GetString ( response . ApiCallDetails . RequestBodyInBytes ) ) ;
303- }
304-
305- PostRequestProductCheck < TRequest , TResponse > ( request , response ) ;
306-
307- if ( _productCheckStatus == ProductCheckStatus . Failed )
308- throw new UnsupportedProductException ( UnsupportedProductException . InvalidProductError ) ;
309-
310- if ( request . RequestParameters . RequestConfiguration is not null )
311- {
312- if ( ! hadRequestConfig )
313- {
314- request . RequestParameters . RequestConfiguration = null ;
315- }
316- else if ( originalHeaders . HasValue && originalHeaders . Value . Count > 0 )
317- {
318- request . RequestParameters . RequestConfiguration . ResponseHeadersToParse = originalHeaders . Value ;
319- }
320- }
321-
322- return response ;
323- }
324- }
325-
326173 internal Task < TResponse > DoRequestAsync < TRequest , TResponse , TRequestParameters > (
327174 TRequest request ,
328175 CancellationToken cancellationToken = default )
329176 where TRequest : Request < TRequestParameters >
330177 where TResponse : ElasticsearchResponse , new ( )
331178 where TRequestParameters : RequestParameters , new ( )
332- {
333- if ( _productCheckStatus == ProductCheckStatus . Failed )
334- throw new UnsupportedProductException ( UnsupportedProductException . InvalidProductError ) ;
335-
336- var requestModified = false ;
337- var hadRequestConfig = false ;
338- HeadersList ? originalHeaders = null ;
339-
340- // If we have not yet checked the product name, add the product header to the list of headers to parse.
341- if ( _productCheckStatus == ProductCheckStatus . NotChecked )
342- {
343- requestModified = true ;
344-
345- if ( request . RequestParameters . RequestConfiguration is null )
346- {
347- request . RequestParameters . RequestConfiguration = new RequestConfiguration ( ) ;
348- }
349- else
350- {
351- originalHeaders = request . RequestParameters . RequestConfiguration . ResponseHeadersToParse ;
352- hadRequestConfig = true ;
353- }
354-
355- if ( request . RequestParameters . RequestConfiguration . ResponseHeadersToParse . Count == 0 )
356- {
357- request . RequestParameters . RequestConfiguration . ResponseHeadersToParse = new HeadersList ( "x-elastic-product" ) ;
358- }
359- else
360- {
361- request . RequestParameters . RequestConfiguration . ResponseHeadersToParse = new HeadersList ( request . RequestParameters . RequestConfiguration . ResponseHeadersToParse , "x-elastic-product" ) ;
362- }
363- }
364-
365- var ( resolvedUrl , urlTemplate , postData ) = PrepareRequest < TRequest , TRequestParameters > ( request , null ) ;
366-
367- if ( _productCheckStatus == ProductCheckStatus . Succeeded && ! requestModified && ! _activitySource . HasListeners ( ) )
368- return _transport . RequestAsync < TResponse > ( request . HttpMethod , resolvedUrl , postData , request . RequestParameters , cancellationToken ) ;
369-
370- return SendRequest ( request , request . RequestParameters , resolvedUrl , postData , hadRequestConfig , originalHeaders ) ;
371-
372- async Task < TResponse > SendRequest ( TRequest request , RequestParameters ? parameters , string url , PostData postData , bool hadRequestConfig , HeadersList ? originalHeaders )
373- {
374- TResponse response ;
375-
376- using ( var activity = _activitySource . StartActivity ( $ "Elasticsearch: { request . HttpMethod } { urlTemplate } ", ActivityKind . Client ) )
377- {
378- activity ? . AddTag ( "db.system" , "elasticsearch" ) ;
379- activity ? . SetCustomProperty ( "elastic.transport.client" , true ) ;
380-
381- response = await _transport . RequestAsync < TResponse > ( request . HttpMethod , url , postData , parameters ) . ConfigureAwait ( false ) ;
382-
383- if ( response . ApiCallDetails . RequestBodyInBytes is not null )
384- activity ? . AddTag ( "db.statement" , System . Text . Encoding . UTF8 . GetString ( response . ApiCallDetails . RequestBodyInBytes ) ) ;
385- }
386-
387- PostRequestProductCheck < TRequest , TResponse > ( request , response ) ;
388-
389- if ( _productCheckStatus == ProductCheckStatus . Failed )
390- throw new UnsupportedProductException ( UnsupportedProductException . InvalidProductError ) ;
391-
392- if ( request . RequestParameters . RequestConfiguration is not null )
393- {
394- if ( ! hadRequestConfig )
395- {
396- request . RequestParameters . RequestConfiguration = null ;
397- }
398- else if ( originalHeaders . HasValue && originalHeaders . Value . Count > 0 )
399- {
400- request . RequestParameters . RequestConfiguration . ResponseHeadersToParse = originalHeaders . Value ;
401- }
402- }
403-
404- return response ;
405- }
406- }
179+ => DoRequestAsync < TRequest , TResponse , TRequestParameters > ( request , null , cancellationToken ) ;
407180
408181 internal Task < TResponse > DoRequestAsync < TRequest , TResponse , TRequestParameters > (
409182 TRequest request ,
410- RequestParameters ? parameters ,
411- Action < IRequestConfiguration > ? forceConfiguration = null ,
183+ Action < IRequestConfiguration > ? forceConfiguration ,
412184 CancellationToken cancellationToken = default )
413185 where TRequest : Request < TRequestParameters >
414186 where TResponse : ElasticsearchResponse , new ( )
@@ -446,12 +218,11 @@ internal Task<TResponse> DoRequestAsync<TRequest, TResponse, TRequestParameters>
446218 }
447219 }
448220
449- var ( resolvedUrl , urlTemplate , postData ) = PrepareRequest < TRequest , TRequestParameters > ( request , null ) ;
450-
451- if ( _productCheckStatus == ProductCheckStatus . Succeeded && ! requestModified && ! _activitySource . HasListeners ( ) )
452- return _transport . RequestAsync < TResponse > ( request . HttpMethod , resolvedUrl , postData , parameters , cancellationToken ) ;
221+ var ( resolvedUrl , urlTemplate , postData ) = PrepareRequest < TRequest , TRequestParameters > ( request , forceConfiguration ) ;
453222
454- return SendRequest ( request , parameters , resolvedUrl , postData , hadRequestConfig , originalHeaders ) ;
223+ return _productCheckStatus == ProductCheckStatus . Succeeded && ! requestModified && ! _activitySource . HasListeners ( )
224+ ? _transport . RequestAsync < TResponse > ( request . HttpMethod , resolvedUrl , postData , request . RequestParameters , cancellationToken )
225+ : SendRequest ( request , request . RequestParameters , resolvedUrl , postData , hadRequestConfig , originalHeaders ) ;
455226
456227 async Task < TResponse > SendRequest ( TRequest request , RequestParameters ? parameters , string url , PostData postData , bool hadRequestConfig , HeadersList ? originalHeaders )
457228 {
@@ -462,7 +233,7 @@ async Task<TResponse> SendRequest(TRequest request, RequestParameters? parameter
462233 activity ? . AddTag ( "db.system" , "elasticsearch" ) ;
463234 activity ? . SetCustomProperty ( "elastic.transport.client" , true ) ;
464235
465- response = await _transport . RequestAsync < TResponse > ( request . HttpMethod , url , postData , parameters ) . ConfigureAwait ( false ) ;
236+ response = await _transport . RequestAsync < TResponse > ( request . HttpMethod , url , postData , parameters , cancellationToken ) . ConfigureAwait ( false ) ;
466237
467238 if ( response . ApiCallDetails . RequestBodyInBytes is not null )
468239 activity ? . AddTag ( "db.statement" , System . Text . Encoding . UTF8 . GetString ( response . ApiCallDetails . RequestBodyInBytes ) ) ;
0 commit comments