|
@@ -26,6 +26,13 @@ namespace JsonRpcLite.Network
|
|
|
/// </summary>
|
|
|
public string Name { get; protected set; }
|
|
|
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Gets or set the compress function of the engine.
|
|
|
+ /// </summary>
|
|
|
+ public bool EnbaleCompression { get; set; }
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Start the engine and use given router to handle request.
|
|
|
/// </summary>
|
|
@@ -227,24 +234,27 @@ namespace JsonRpcLite.Network
|
|
|
private async Task<byte[]> GetOutputDataAsync(IJsonRpcHttpContext context, byte[] data, CancellationToken cancellationToken = default)
|
|
|
{
|
|
|
var outputData = data;
|
|
|
- var acceptEncoding = context.GetRequestHeader("Accept-Encoding");
|
|
|
- if (acceptEncoding != null && acceptEncoding.Contains("gzip"))
|
|
|
+ if (EnbaleCompression)
|
|
|
{
|
|
|
- context.SetResponseHeader("Content-Encoding", "gzip");
|
|
|
- await using var memoryStream = new MemoryStream();
|
|
|
- await using var outputStream = new GZipStream(memoryStream, CompressionMode.Compress);
|
|
|
- await outputStream.WriteAsync(outputData, cancellationToken).ConfigureAwait(false);
|
|
|
- await outputStream.FlushAsync(cancellationToken).ConfigureAwait(false);
|
|
|
- outputData = memoryStream.ToArray();
|
|
|
- }
|
|
|
- else if (acceptEncoding != null && acceptEncoding.Contains("deflate"))
|
|
|
- {
|
|
|
- context.SetResponseHeader("Content-Encoding", "deflate");
|
|
|
- await using var memoryStream = new MemoryStream();
|
|
|
- await using var outputStream = new DeflateStream(memoryStream, CompressionMode.Compress);
|
|
|
- await outputStream.WriteAsync(outputData, cancellationToken).ConfigureAwait(false);
|
|
|
- await outputStream.FlushAsync(cancellationToken).ConfigureAwait(false);
|
|
|
- outputData = memoryStream.ToArray();
|
|
|
+ var acceptEncoding = context.GetRequestHeader("Accept-Encoding");
|
|
|
+ if (acceptEncoding != null && acceptEncoding.Contains("gzip"))
|
|
|
+ {
|
|
|
+ context.SetResponseHeader("Content-Encoding", "gzip");
|
|
|
+ await using var memoryStream = new MemoryStream();
|
|
|
+ await using var outputStream = new GZipStream(memoryStream, CompressionMode.Compress);
|
|
|
+ await outputStream.WriteAsync(outputData, cancellationToken).ConfigureAwait(false);
|
|
|
+ await outputStream.FlushAsync(cancellationToken).ConfigureAwait(false);
|
|
|
+ outputData = memoryStream.ToArray();
|
|
|
+ }
|
|
|
+ else if (acceptEncoding != null && acceptEncoding.Contains("deflate"))
|
|
|
+ {
|
|
|
+ context.SetResponseHeader("Content-Encoding", "deflate");
|
|
|
+ await using var memoryStream = new MemoryStream();
|
|
|
+ await using var outputStream = new DeflateStream(memoryStream, CompressionMode.Compress);
|
|
|
+ await outputStream.WriteAsync(outputData, cancellationToken).ConfigureAwait(false);
|
|
|
+ await outputStream.FlushAsync(cancellationToken).ConfigureAwait(false);
|
|
|
+ outputData = memoryStream.ToArray();
|
|
|
+ }
|
|
|
}
|
|
|
return outputData;
|
|
|
}
|