@@ -67,20 +67,22 @@ public virtual ElasticsearchResponse<Stream> PostSync(Uri uri, byte[] data, IReq
67
67
{
68
68
return this . BodyRequest ( uri , data , "POST" , requestSpecificConfig ) ;
69
69
}
70
+
70
71
public virtual ElasticsearchResponse < Stream > PutSync ( Uri uri , byte [ ] data , IRequestConfiguration requestSpecificConfig = null )
71
72
{
72
73
return this . BodyRequest ( uri , data , "PUT" , requestSpecificConfig ) ;
73
74
}
75
+
74
76
public virtual ElasticsearchResponse < Stream > DeleteSync ( Uri uri , IRequestConfiguration requestSpecificConfig = null )
75
77
{
76
78
return this . HeaderOnlyRequest ( uri , "DELETE" , requestSpecificConfig ) ;
77
79
}
80
+
78
81
public virtual ElasticsearchResponse < Stream > DeleteSync ( Uri uri , byte [ ] data , IRequestConfiguration requestSpecificConfig = null )
79
82
{
80
83
return this . BodyRequest ( uri , data , "DELETE" , requestSpecificConfig ) ;
81
84
}
82
85
83
-
84
86
private ElasticsearchResponse < Stream > HeaderOnlyRequest ( Uri uri , string method , IRequestConfiguration requestSpecificConfig )
85
87
{
86
88
var r = this . CreateHttpWebRequest ( uri , method , null , requestSpecificConfig ) ;
@@ -93,17 +95,18 @@ private ElasticsearchResponse<Stream> BodyRequest(Uri uri, byte[] data, string m
93
95
return this . DoSynchronousRequest ( r , data , requestSpecificConfig ) ;
94
96
}
95
97
96
-
97
98
public virtual Task < ElasticsearchResponse < Stream > > Get ( Uri uri , IRequestConfiguration requestSpecificConfig = null )
98
99
{
99
100
var r = this . CreateHttpWebRequest ( uri , "GET" , null , requestSpecificConfig ) ;
100
101
return this . DoAsyncRequest ( r , requestSpecificConfig : requestSpecificConfig ) ;
101
102
}
103
+
102
104
public virtual Task < ElasticsearchResponse < Stream > > Head ( Uri uri , IRequestConfiguration requestSpecificConfig = null )
103
105
{
104
106
var r = this . CreateHttpWebRequest ( uri , "HEAD" , null , requestSpecificConfig ) ;
105
107
return this . DoAsyncRequest ( r , requestSpecificConfig : requestSpecificConfig ) ;
106
108
}
109
+
107
110
public virtual Task < ElasticsearchResponse < Stream > > Post ( Uri uri , byte [ ] data , IRequestConfiguration requestSpecificConfig = null )
108
111
{
109
112
var r = this . CreateHttpWebRequest ( uri , "POST" , data , requestSpecificConfig ) ;
@@ -121,6 +124,7 @@ public virtual Task<ElasticsearchResponse<Stream>> Delete(Uri uri, byte[] data,
121
124
var r = this . CreateHttpWebRequest ( uri , "DELETE" , data , requestSpecificConfig ) ;
122
125
return this . DoAsyncRequest ( r , data , requestSpecificConfig : requestSpecificConfig ) ;
123
126
}
127
+
124
128
public virtual Task < ElasticsearchResponse < Stream > > Delete ( Uri uri , IRequestConfiguration requestSpecificConfig = null )
125
129
{
126
130
var r = this . CreateHttpWebRequest ( uri , "DELETE" , null , requestSpecificConfig ) ;
@@ -201,10 +205,13 @@ protected virtual HttpWebRequest CreateWebRequest(Uri uri, string method, byte[]
201
205
request . Pipelined = this . ConnectionSettings . HttpPipeliningEnabled
202
206
|| ( requestSpecificConfig != null && requestSpecificConfig . EnableHttpPipelining ) ;
203
207
204
- if ( this . ConnectionSettings . EnableCompressedResponses )
208
+ if ( this . ConnectionSettings . EnableCompressedResponses
209
+ || this . ConnectionSettings . EnableHttpCompression )
205
210
{
206
211
request . AutomaticDecompression = DecompressionMethods . GZip | DecompressionMethods . Deflate ;
207
212
request . Headers . Add ( "Accept-Encoding" , "gzip,deflate" ) ;
213
+ if ( this . ConnectionSettings . EnableHttpCompression )
214
+ request . Headers . Add ( "Content-Encoding" , "gzip" ) ;
208
215
}
209
216
210
217
if ( requestSpecificConfig != null && ! string . IsNullOrWhiteSpace ( requestSpecificConfig . ContentType ) )
@@ -235,9 +242,14 @@ protected virtual ElasticsearchResponse<Stream> DoSynchronousRequest(HttpWebRequ
235
242
236
243
if ( data != null )
237
244
{
245
+
238
246
using ( var r = request . GetRequestStream ( ) )
239
247
{
240
- r . Write ( data , 0 , data . Length ) ;
248
+ if ( this . ConnectionSettings . EnableHttpCompression )
249
+ using ( var zipStream = new GZipStream ( r , CompressionMode . Compress ) )
250
+ zipStream . Write ( data , 0 , data . Length ) ;
251
+ else
252
+ r . Write ( data , 0 , data . Length ) ;
241
253
}
242
254
}
243
255
try
@@ -325,8 +337,22 @@ private IEnumerable<Task> _AsyncSteps(HttpWebRequest request, TaskCompletionSour
325
337
var requestStream = getRequestStream . Result ;
326
338
try
327
339
{
328
- var writeToRequestStream = Task . Factory . FromAsync ( requestStream . BeginWrite , requestStream . EndWrite , data , 0 , data . Length , null ) ;
329
- yield return writeToRequestStream ;
340
+ if ( this . ConnectionSettings . EnableHttpCompression )
341
+ {
342
+ using ( var zipStream = new GZipStream ( requestStream , CompressionMode . Compress ) )
343
+ {
344
+
345
+ var writeToRequestStream = Task . Factory . FromAsync ( zipStream . BeginWrite , zipStream . EndWrite , data , 0 ,
346
+ data . Length , null ) ;
347
+ yield return writeToRequestStream ;
348
+ }
349
+ }
350
+ else
351
+ {
352
+ var writeToRequestStream = Task . Factory . FromAsync ( requestStream . BeginWrite , requestStream . EndWrite , data , 0 ,
353
+ data . Length , null ) ;
354
+ yield return writeToRequestStream ;
355
+ }
330
356
}
331
357
finally
332
358
{
0 commit comments