From f4736bcf4916a9bce087f96251bbd0eb128b7ca1 Mon Sep 17 00:00:00 2001 From: Jkorf Date: Mon, 29 Jun 2026 10:55:02 +0200 Subject: [PATCH] Updated to version 12.0.0 --- CryptoExchange.Net/CryptoExchange.Net.csproj | 2 +- README.md | 64 ++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/CryptoExchange.Net/CryptoExchange.Net.csproj b/CryptoExchange.Net/CryptoExchange.Net.csproj index 130127d6..a52877d0 100644 --- a/CryptoExchange.Net/CryptoExchange.Net.csproj +++ b/CryptoExchange.Net/CryptoExchange.Net.csproj @@ -6,7 +6,7 @@ CryptoExchange.Net JKorf CryptoExchange.Net is a base library which is used to implement different cryptocurrency (exchange) API's. It provides a standardized way of implementing different API's, which results in a very similar experience for users of the API implementations. - 12.0.0-beta1 + 12.0.0 12.0.0 12.0.0 false diff --git a/README.md b/README.md index fb9bcb01..0bfdda67 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,70 @@ Various: * PlatformInfo now required support environment names in the constructor ## Release notes +* Version 12.0.0 - 29 Jun 2026 + * Result types: + * (Web)CallResult types are replaced by HttpResult, WebSocketResult and QueryResult with the same logic + * Updated result types to record type + * Result creation can be done with (Http/WebSocket/Query)Result.Ok(..) and .Fail(..) + * Removed implicit result type conversion to bool, `if (result)` no longer works, instead use `if (result.Success)` + * Replaced CallResult.SuccessResult with CallResult.Ok() + * Fixed result object nullability hinting, for example Data might be null if Success isn't checked for true + * Parameters & serialization: + * Added support for `enabled` and `disabled` strings to bool converter + * Removed ParameterCollection type, has been replaced by Parameters type + * Removed ArraySerialization, OrderParameters and ParameterOrderComparer properties from RestApiClient, moved to ParameterSerializationsSettings + * Updated RestRequestConfiguration in AuthenticationProvider.ProcessRequest to contain the full RequestDefinition instead of copied fields + * Clients: + * Updated Api client constructor logging parameter from ILogger to ILoggerFactory? + * Added Api client constructor exchange name parameter + * Added ToString overrides on base API types + * Added Exchange property on BaseApiClient + * Added ApiCredentials property on IRestApiClient and ISocketApiClient interfaces + * Updated ILogger source from client name to topic specific client name + * Removed logging from client creation + * Fixed BaseRestClient SetApiCredentials not marked as virtual + * Rest: + * Added BaseAddress to RequestDefinition object + * Updated RestApiClient AuthenticationProvider logic from private to protected and virtual + * Removed RestApiClient.SendAsync baseAddress parameter removed + * Removed RestApiClient.SendAsync without type parameter + * WebSocket: + * Updated MessageRouting definition into CreateForEvent for subscriptions and CreateForQuery for queries + * Improved Query type safety with CeateForQuery which allows second parameter for specifying the result type + * Renamed MessageRouter.CreateWithoutHandler to CreateVoid + * Updated SocketApiClient.GetSocketConnection to check connection uri instead of Tag for finding compatible connections + * Removed unused UnhandledMessageExpected property SocketApiClient + * Fixed issue in SocketApiClient.GetSocketConnection causing requests to always wait the full max 10 seconds when there was a reconnecting socket + + * Shared APIs: + * Updated Option definitions to always require the exchange name as first parameter + * Added missing dedicated option types + * Added Discover method on ISharedClient interface, returning info on supported capabilities and operations + * Added SharedRequest GetParamValue helper method accepting multiple parameter names + * Added ResetStaticExchangeParameters method on ExchangeParameters + * Added Status property to SharedWithdrawal model + * Added TradingModes property to SharedBalance model + * Updated ExchangeSymbolCache to support multiple environments and additional key separation + * Updated Shared ExchangeParameters parameter names to be case insensitive + * Updated code comments + * Replaced ExchangeResult with ExchangeCallResult type + * Removed AsExchangeResult/ExchangeWebResult + * Removed TradingMode from the response model, only maintained on models where it makes sense + * Removed IListenKey support, listen keys now rely on internal management with TokenManager + * Rate limiting: + * Fixed websocket connection attempts counting towards rate limit even when server could not be reached + * Removed host from rate limit methods, now part of the already provided RequestDefinition + * Added amount parameter to RateLimit Reset method to allow partially resetting the limit + * Added TokenManager implementation for automatic listenkey/token management + * Added UserClientProvider base class + * Added async streaming on UserDataTracker items with StreamUpdatesAsync + * Added cancellation token support to UserDataTracker starting + * Added Unit type for non-result types + * Added ServerError constructor taking ErrorType and message to make it easier to create + * Added SupportedEnvironments property to PlatformInfo + * Updated SymbolOrderBook DoResyncAsync to return CallResult instead of CallResult which was redundant + * Various small performance improvements + * Version 11.2.2 - 08 Jun 2026 * Fixed timing issue causing websocket connection to possible loop in error state