From b309deb0c4b5f471e0ed5442ff496354379a4f9b Mon Sep 17 00:00:00 2001 From: JKorf Date: Thu, 25 Jul 2024 18:47:33 +0200 Subject: [PATCH] Small fixed/improvements. Added deflate stream method --- CryptoExchange.Net/Clients/RestApiClient.cs | 2 +- CryptoExchange.Net/Clients/SocketApiClient.cs | 6 +++++- CryptoExchange.Net/ExtensionMethods.cs | 19 ++++++++++++++++++- .../Objects/ParameterCollection.cs | 2 +- .../Sockets/SocketConnection.cs | 2 +- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/CryptoExchange.Net/Clients/RestApiClient.cs b/CryptoExchange.Net/Clients/RestApiClient.cs index 81d7c7f..60eb317 100644 --- a/CryptoExchange.Net/Clients/RestApiClient.cs +++ b/CryptoExchange.Net/Clients/RestApiClient.cs @@ -228,7 +228,7 @@ namespace CryptoExchange.Net.Clients uriParameters, bodyParameters, additionalHeaders); - _logger.RestApiSendRequest(request.RequestId, definition, request.Content, request.Uri.Query, string.Join(", ", request.GetHeaders().Select(h => h.Key + $"=[{string.Join(",", h.Value)}]"))); + _logger.RestApiSendRequest(request.RequestId, definition, request.Content, string.IsNullOrEmpty(request.Uri.Query) ? "-" : request.Uri.Query, string.Join(", ", request.GetHeaders().Select(h => h.Key + $"=[{string.Join(",", h.Value)}]"))); TotalRequestsMade++; var result = await GetResponseAsync(request, definition.RateLimitGate, cancellationToken).ConfigureAwait(false); if (!result) diff --git a/CryptoExchange.Net/Clients/SocketApiClient.cs b/CryptoExchange.Net/Clients/SocketApiClient.cs index ace701a..c2ee56a 100644 --- a/CryptoExchange.Net/Clients/SocketApiClient.cs +++ b/CryptoExchange.Net/Clients/SocketApiClient.cs @@ -189,7 +189,10 @@ namespace CryptoExchange.Net.Clients return new CallResult(new InvalidOperationError("Client disposed, can't subscribe")); if (subscription.Authenticated && AuthenticationProvider == null) + { + _logger.LogWarning("Failed to subscribe, private subscription but no API credentials set"); return new CallResult(new NoApiCredentialsError()); + } SocketConnection socketConnection; var released = false; @@ -786,9 +789,10 @@ namespace CryptoExchange.Net.Clients /// /// Preprocess a stream message /// + /// /// /// /// - public virtual ReadOnlyMemory PreprocessStreamMessage(WebSocketMessageType type, ReadOnlyMemory data) => data; + public virtual ReadOnlyMemory PreprocessStreamMessage(SocketConnection connection, WebSocketMessageType type, ReadOnlyMemory data) => data; } } diff --git a/CryptoExchange.Net/ExtensionMethods.cs b/CryptoExchange.Net/ExtensionMethods.cs index a0b5363..5fd22b1 100644 --- a/CryptoExchange.Net/ExtensionMethods.cs +++ b/CryptoExchange.Net/ExtensionMethods.cs @@ -453,7 +453,7 @@ namespace CryptoExchange.Net } /// - /// Decompress using Gzip + /// Decompress using GzipStream /// /// /// @@ -467,6 +467,23 @@ namespace CryptoExchange.Net deflateStream.CopyTo(decompressedStream); return new ReadOnlyMemory(decompressedStream.GetBuffer(), 0, (int)decompressedStream.Length); } + + /// + /// Decompress using DeflateStream + /// + /// + /// + public static ReadOnlyMemory Decompress(this ReadOnlyMemory input) + { + var output = new MemoryStream(); + + using (var compressStream = new MemoryStream(input.ToArray())) + using (var decompressor = new DeflateStream(compressStream, CompressionMode.Decompress)) + decompressor.CopyTo(output); + + output.Position = 0; + return new ReadOnlyMemory(output.GetBuffer(), 0, (int)output.Length); + } } } diff --git a/CryptoExchange.Net/Objects/ParameterCollection.cs b/CryptoExchange.Net/Objects/ParameterCollection.cs index ee27702..71b1378 100644 --- a/CryptoExchange.Net/Objects/ParameterCollection.cs +++ b/CryptoExchange.Net/Objects/ParameterCollection.cs @@ -188,7 +188,7 @@ namespace CryptoExchange.Net.Objects public void AddEnumAsInt(string key, T value) { var stringVal = EnumConverter.GetString(value); - Add(key, EnumConverter.GetString(int.Parse(stringVal))!); + Add(key, int.Parse(stringVal)!); } /// diff --git a/CryptoExchange.Net/Sockets/SocketConnection.cs b/CryptoExchange.Net/Sockets/SocketConnection.cs index 450e7ef..9e64f77 100644 --- a/CryptoExchange.Net/Sockets/SocketConnection.cs +++ b/CryptoExchange.Net/Sockets/SocketConnection.cs @@ -420,7 +420,7 @@ namespace CryptoExchange.Net.Sockets string? originalData = null; // 1. Decrypt/Preprocess if necessary - data = ApiClient.PreprocessStreamMessage(type, data); + data = ApiClient.PreprocessStreamMessage(this, type, data); // 2. Read data into accessor _accessor.Read(data);