From 837038092d4b4bd2f05056d6c57dcf7764fdcd00 Mon Sep 17 00:00:00 2001 From: Jkorf Date: Fri, 15 Aug 2025 15:51:59 +0200 Subject: [PATCH] wip --- .../CryptoExchange.Net.Protobuf.csproj | 4 ++- .../CallResultTests.cs | 29 +++++++++-------- .../RestClientTests.cs | 2 +- .../Sockets/TestChannelQuery.cs | 3 +- .../TestImplementations/TestBaseClient.cs | 3 +- .../TestImplementations/TestRestClient.cs | 3 +- CryptoExchange.Net/Objects/Error.cs | 4 +-- .../Objects/Errors/ErrorCollection.cs | 1 - .../Objects/Errors/ErrorType.cs | 32 ++++++++----------- 9 files changed, 41 insertions(+), 40 deletions(-) diff --git a/CryptoExchange.Net.Protobuf/CryptoExchange.Net.Protobuf.csproj b/CryptoExchange.Net.Protobuf/CryptoExchange.Net.Protobuf.csproj index 148127f..287bbae 100644 --- a/CryptoExchange.Net.Protobuf/CryptoExchange.Net.Protobuf.csproj +++ b/CryptoExchange.Net.Protobuf/CryptoExchange.Net.Protobuf.csproj @@ -41,7 +41,9 @@ CryptoExchange.Net.Protobuf.xml - + + + \ No newline at end of file diff --git a/CryptoExchange.Net.UnitTests/CallResultTests.cs b/CryptoExchange.Net.UnitTests/CallResultTests.cs index ab75100..8cf0ab6 100644 --- a/CryptoExchange.Net.UnitTests/CallResultTests.cs +++ b/CryptoExchange.Net.UnitTests/CallResultTests.cs @@ -1,4 +1,5 @@ using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Objects.Errors; using NUnit.Framework; using NUnit.Framework.Legacy; using System; @@ -16,9 +17,9 @@ namespace CryptoExchange.Net.UnitTests [Test] public void TestBasicErrorCallResult() { - var result = new CallResult(new ServerError("TestError")); + var result = new CallResult(new ServerError("TestError", ErrorInfo.Unknown)); - ClassicAssert.AreSame(result.Error.Message, "TestError"); + ClassicAssert.AreSame(result.Error.ErrorCode, "TestError"); ClassicAssert.IsFalse(result); ClassicAssert.IsFalse(result.Success); } @@ -36,9 +37,9 @@ namespace CryptoExchange.Net.UnitTests [Test] public void TestCallResultError() { - var result = new CallResult(new ServerError("TestError")); + var result = new CallResult(new ServerError("TestError", ErrorInfo.Unknown)); - ClassicAssert.AreSame(result.Error.Message, "TestError"); + ClassicAssert.AreSame(result.Error.ErrorCode, "TestError"); ClassicAssert.IsNull(result.Data); ClassicAssert.IsFalse(result); ClassicAssert.IsFalse(result.Success); @@ -71,11 +72,11 @@ namespace CryptoExchange.Net.UnitTests [Test] public void TestCallResultErrorAs() { - var result = new CallResult(new ServerError("TestError")); + var result = new CallResult(new ServerError("TestError", ErrorInfo.Unknown)); var asResult = result.As(default); ClassicAssert.IsNotNull(asResult.Error); - ClassicAssert.AreSame(asResult.Error.Message, "TestError"); + ClassicAssert.AreSame(asResult.Error.ErrorCode, "TestError"); ClassicAssert.IsNull(asResult.Data); ClassicAssert.IsFalse(asResult); ClassicAssert.IsFalse(asResult.Success); @@ -84,11 +85,11 @@ namespace CryptoExchange.Net.UnitTests [Test] public void TestCallResultErrorAsError() { - var result = new CallResult(new ServerError("TestError")); - var asResult = result.AsError(new ServerError("TestError2")); + var result = new CallResult(new ServerError("TestError", ErrorInfo.Unknown)); + var asResult = result.AsError(new ServerError("TestError2", ErrorInfo.Unknown)); ClassicAssert.IsNotNull(asResult.Error); - ClassicAssert.AreSame(asResult.Error.Message, "TestError2"); + ClassicAssert.AreSame(asResult.Error.ErrorCode, "TestError2"); ClassicAssert.IsNull(asResult.Data); ClassicAssert.IsFalse(asResult); ClassicAssert.IsFalse(asResult.Success); @@ -97,11 +98,11 @@ namespace CryptoExchange.Net.UnitTests [Test] public void TestWebCallResultErrorAsError() { - var result = new WebCallResult(new ServerError("TestError")); - var asResult = result.AsError(new ServerError("TestError2")); + var result = new WebCallResult(new ServerError("TestError", ErrorInfo.Unknown)); + var asResult = result.AsError(new ServerError("TestError2", ErrorInfo.Unknown)); ClassicAssert.IsNotNull(asResult.Error); - ClassicAssert.AreSame(asResult.Error.Message, "TestError2"); + ClassicAssert.AreSame(asResult.Error.ErrorCode, "TestError2"); ClassicAssert.IsNull(asResult.Data); ClassicAssert.IsFalse(asResult); ClassicAssert.IsFalse(asResult.Success); @@ -124,10 +125,10 @@ namespace CryptoExchange.Net.UnitTests ResultDataSource.Server, new TestObjectResult(), null); - var asResult = result.AsError(new ServerError("TestError2")); + var asResult = result.AsError(new ServerError("TestError2", ErrorInfo.Unknown)); ClassicAssert.IsNotNull(asResult.Error); - Assert.That(asResult.Error.Message == "TestError2"); + Assert.That(asResult.Error.ErrorCode == "TestError2"); Assert.That(asResult.ResponseStatusCode == System.Net.HttpStatusCode.OK); Assert.That(asResult.ResponseTime == TimeSpan.FromSeconds(1)); Assert.That(asResult.RequestUrl == "https://test.com/api"); diff --git a/CryptoExchange.Net.UnitTests/RestClientTests.cs b/CryptoExchange.Net.UnitTests/RestClientTests.cs index ded742f..1a93a3a 100644 --- a/CryptoExchange.Net.UnitTests/RestClientTests.cs +++ b/CryptoExchange.Net.UnitTests/RestClientTests.cs @@ -96,7 +96,7 @@ namespace CryptoExchange.Net.UnitTests ClassicAssert.IsFalse(result.Success); Assert.That(result.Error != null); Assert.That(result.Error is ServerError); - Assert.That(result.Error.Code == 123); + Assert.That(result.Error.ErrorCode == "123"); Assert.That(result.Error.Message == "Invalid request"); } diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs index 212c055..431dd7a 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs @@ -1,4 +1,5 @@ using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Objects.Errors; using CryptoExchange.Net.Objects.Sockets; using CryptoExchange.Net.Sockets; using System; @@ -40,7 +41,7 @@ namespace CryptoExchange.Net.UnitTests.TestImplementations.Sockets { if (!message.Data.Status.Equals("confirmed", StringComparison.OrdinalIgnoreCase)) { - return new CallResult(new ServerError(message.Data.Status)); + return new CallResult(new ServerError(ErrorInfo.Unknown with { Message = message.Data.Status })); } return message.ToCallResult(); diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs b/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs index 52dd6a4..09df970 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs @@ -10,6 +10,7 @@ using CryptoExchange.Net.Clients; using CryptoExchange.Net.Converters.SystemTextJson; using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; +using CryptoExchange.Net.Objects.Errors; using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.SharedApis; using CryptoExchange.Net.UnitTests.TestImplementations; @@ -55,7 +56,7 @@ namespace CryptoExchange.Net.UnitTests var accessor = CreateAccessor(); var valid = accessor.Read(stream, true).Result; if (!valid) - return new CallResult(new ServerError(data)); + return new CallResult(new ServerError(ErrorInfo.Unknown with { Message = data })); var deserializeResult = accessor.Deserialize(); return deserializeResult; diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs b/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs index f909ed9..ed1227c 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs @@ -18,6 +18,7 @@ using Microsoft.Extensions.Options; using System.Linq; using CryptoExchange.Net.Converters.SystemTextJson; using System.Text.Json.Serialization; +using CryptoExchange.Net.Objects.Errors; namespace CryptoExchange.Net.UnitTests.TestImplementations { @@ -197,7 +198,7 @@ namespace CryptoExchange.Net.UnitTests.TestImplementations { var errorData = accessor.Deserialize(); - return new ServerError(errorData.Data.ErrorCode, errorData.Data.ErrorMessage); + return new ServerError(errorData.Data.ErrorCode, GetErrorInfo(errorData.Data.ErrorCode, errorData.Data.ErrorMessage)); } public override TimeSpan? GetTimeOffset() diff --git a/CryptoExchange.Net/Objects/Error.cs b/CryptoExchange.Net/Objects/Error.cs index 5fa23c8..4fd407d 100644 --- a/CryptoExchange.Net/Objects/Error.cs +++ b/CryptoExchange.Net/Objects/Error.cs @@ -253,7 +253,7 @@ namespace CryptoExchange.Net.Objects /// /// Default error info /// - protected static readonly ErrorInfo _errorInfo = new ErrorInfo(ErrorType.RequestRateLimited, false, "Client rate limit exceeded"); + protected static readonly ErrorInfo _errorInfo = new ErrorInfo(ErrorType.RateLimitRequest, false, "Client rate limit exceeded"); /// /// ctor @@ -274,7 +274,7 @@ namespace CryptoExchange.Net.Objects /// /// Default error info /// - protected static readonly ErrorInfo _errorInfo = new ErrorInfo(ErrorType.RequestRateLimited, false, "Server rate limit exceeded"); + protected static readonly ErrorInfo _errorInfo = new ErrorInfo(ErrorType.RateLimitRequest, false, "Server rate limit exceeded"); /// /// ctor diff --git a/CryptoExchange.Net/Objects/Errors/ErrorCollection.cs b/CryptoExchange.Net/Objects/Errors/ErrorCollection.cs index 804a63a..8370dcd 100644 --- a/CryptoExchange.Net/Objects/Errors/ErrorCollection.cs +++ b/CryptoExchange.Net/Objects/Errors/ErrorCollection.cs @@ -44,7 +44,6 @@ namespace CryptoExchange.Net.Objects.Errors /// public ErrorInfo GetErrorInfo(string code, string? message) { - message = message ?? code ?? "-"; if (_directMapping.TryGetValue(code!, out var info)) return info with { Message = message }; diff --git a/CryptoExchange.Net/Objects/Errors/ErrorType.cs b/CryptoExchange.Net/Objects/Errors/ErrorType.cs index b488654..ef507d4 100644 --- a/CryptoExchange.Net/Objects/Errors/ErrorType.cs +++ b/CryptoExchange.Net/Objects/Errors/ErrorType.cs @@ -79,27 +79,23 @@ namespace CryptoExchange.Net.Objects.Errors /// /// Request rate limit error, too many requests /// - RequestRateLimited, + RateLimitRequest, /// /// Connection rate limit error, too many connections /// - ConnectionRateLimited, + RateLimitConnection, /// /// Subscription rate limit error, too many subscriptions /// - SubscriptionRateLimited, + RateLimitSubscription, /// /// Order rate limit error, too many orders /// - OrderRateLimited, + RateLimitOrder, /// - /// Timestamp invalid + /// Request timestamp invalid /// - TimestampInvalid, - /// - /// Request signature invalid - /// - SignatureInvalid, + InvalidTimestamp, /// /// Unknown symbol /// @@ -119,19 +115,19 @@ namespace CryptoExchange.Net.Objects.Errors /// /// Invalid quantity /// - QuantityInvalid, + InvalidQuantity, /// /// Invalid price /// - PriceInvalid, + InvalidPrice, /// /// Parameter(s) for stop or tp/sl order invalid /// - StopParametersInvalid, + InvalidStopParameters, /// - /// Not enough balance to execute order + /// Not enough balance to execute request /// - BalanceInsufficient, + InsufficientBalance, /// /// Client order id already in use /// @@ -139,11 +135,11 @@ namespace CryptoExchange.Net.Objects.Errors /// /// Symbol is not currently trading /// - SymbolNotTrading, + UnavailableSymbol, /// /// Order rejected due to order configuration such as order type or time in force restrictions /// - OrderConfigurationRejected, + RejectedOrderConfiguration, /// /// There is no open position /// @@ -155,7 +151,7 @@ namespace CryptoExchange.Net.Objects.Errors /// /// The target object is not in the correct state for an operation /// - TargetIncorrectState, + IncorrectState, /// /// Risk management error ///