diff --git a/CryptoExchange.Net.UnitTests/AsyncResetEventTests.cs b/CryptoExchange.Net.UnitTests/AsyncResetEventTests.cs
index 992d2df..78bab0f 100644
--- a/CryptoExchange.Net.UnitTests/AsyncResetEventTests.cs
+++ b/CryptoExchange.Net.UnitTests/AsyncResetEventTests.cs
@@ -4,7 +4,6 @@ using NUnit.Framework.Legacy;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
using System.Threading.Tasks;
namespace CryptoExchange.Net.UnitTests
diff --git a/CryptoExchange.Net.UnitTests/BaseClientTests.cs b/CryptoExchange.Net.UnitTests/BaseClientTests.cs
index f64b00e..aae4a95 100644
--- a/CryptoExchange.Net.UnitTests/BaseClientTests.cs
+++ b/CryptoExchange.Net.UnitTests/BaseClientTests.cs
@@ -1,11 +1,5 @@
-using CryptoExchange.Net.Authentication;
-using CryptoExchange.Net.Objects;
-using CryptoExchange.Net.UnitTests.TestImplementations;
-using Microsoft.Extensions.Logging;
-using NUnit.Framework;
+using NUnit.Framework;
using NUnit.Framework.Legacy;
-using System;
-using System.Collections.Generic;
namespace CryptoExchange.Net.UnitTests
{
diff --git a/CryptoExchange.Net.UnitTests/CallResultTests.cs b/CryptoExchange.Net.UnitTests/CallResultTests.cs
index 80c6532..51eaa65 100644
--- a/CryptoExchange.Net.UnitTests/CallResultTests.cs
+++ b/CryptoExchange.Net.UnitTests/CallResultTests.cs
@@ -4,11 +4,8 @@ using NUnit.Framework;
using NUnit.Framework.Legacy;
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Net;
using System.Net.Http;
-using System.Text;
-using System.Threading.Tasks;
namespace CryptoExchange.Net.UnitTests
{
diff --git a/CryptoExchange.Net.UnitTests/ExchangeHelpersTests.cs b/CryptoExchange.Net.UnitTests/ExchangeHelpersTests.cs
index 2fcdae0..a9808fb 100644
--- a/CryptoExchange.Net.UnitTests/ExchangeHelpersTests.cs
+++ b/CryptoExchange.Net.UnitTests/ExchangeHelpersTests.cs
@@ -1,7 +1,5 @@
using CryptoExchange.Net.Objects;
using NUnit.Framework;
-using NUnit.Framework.Legacy;
-using System.Diagnostics;
using System.Globalization;
namespace CryptoExchange.Net.UnitTests
diff --git a/CryptoExchange.Net.UnitTests/OptionsTests.cs b/CryptoExchange.Net.UnitTests/OptionsTests.cs
index 7af2ac2..3f4340d 100644
--- a/CryptoExchange.Net.UnitTests/OptionsTests.cs
+++ b/CryptoExchange.Net.UnitTests/OptionsTests.cs
@@ -1,15 +1,8 @@
using CryptoExchange.Net.Authentication;
-using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Options;
using CryptoExchange.Net.UnitTests.TestImplementations;
-using Microsoft.Extensions.Logging;
using NUnit.Framework;
-using NUnit.Framework.Legacy;
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace CryptoExchange.Net.UnitTests
{
diff --git a/CryptoExchange.Net.UnitTests/RestClientTests.cs b/CryptoExchange.Net.UnitTests/RestClientTests.cs
index 57f1f08..e7c790b 100644
--- a/CryptoExchange.Net.UnitTests/RestClientTests.cs
+++ b/CryptoExchange.Net.UnitTests/RestClientTests.cs
@@ -9,7 +9,6 @@ using System.Threading.Tasks;
using System.Threading;
using NUnit.Framework.Legacy;
using CryptoExchange.Net.RateLimiting;
-using System.Net;
using CryptoExchange.Net.RateLimiting.Guards;
using CryptoExchange.Net.RateLimiting.Filters;
using CryptoExchange.Net.RateLimiting.Interfaces;
diff --git a/CryptoExchange.Net.UnitTests/SystemTextJsonConverterTests.cs b/CryptoExchange.Net.UnitTests/SystemTextJsonConverterTests.cs
index 3270ffc..755f79f 100644
--- a/CryptoExchange.Net.UnitTests/SystemTextJsonConverterTests.cs
+++ b/CryptoExchange.Net.UnitTests/SystemTextJsonConverterTests.cs
@@ -4,9 +4,7 @@ using System.Text.Json;
using NUnit.Framework;
using System;
using System.Text.Json.Serialization;
-using NUnit.Framework.Legacy;
using CryptoExchange.Net.Converters;
-using CryptoExchange.Net.Testing.Comparers;
using CryptoExchange.Net.SharedApis;
namespace CryptoExchange.Net.UnitTests
diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs
index 431dd7a..a143691 100644
--- a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs
+++ b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestChannelQuery.cs
@@ -2,8 +2,8 @@
using CryptoExchange.Net.Objects.Errors;
using CryptoExchange.Net.Objects.Sockets;
using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Sockets.Default;
using System;
-using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace CryptoExchange.Net.UnitTests.TestImplementations.Sockets
diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestQuery.cs b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestQuery.cs
index f2302b6..48a41fb 100644
--- a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestQuery.cs
+++ b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestQuery.cs
@@ -1,9 +1,4 @@
using CryptoExchange.Net.Sockets;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace CryptoExchange.Net.UnitTests.TestImplementations.Sockets
{
diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscription.cs b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscription.cs
index 9d01c31..330d997 100644
--- a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscription.cs
+++ b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscription.cs
@@ -1,13 +1,9 @@
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Objects;
+using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Sockets;
using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Sockets.Default;
using Microsoft.Extensions.Logging;
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace CryptoExchange.Net.UnitTests.TestImplementations.Sockets
{
diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscriptionWithResponseCheck.cs b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscriptionWithResponseCheck.cs
index 4d52563..4778728 100644
--- a/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscriptionWithResponseCheck.cs
+++ b/CryptoExchange.Net.UnitTests/TestImplementations/Sockets/TestSubscriptionWithResponseCheck.cs
@@ -1,12 +1,10 @@
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Objects;
+using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Sockets;
using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Sockets.Default;
using Microsoft.Extensions.Logging;
using Moq;
using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
namespace CryptoExchange.Net.UnitTests.TestImplementations.Sockets
{
diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs b/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs
index 176cff4..38cc876 100644
--- a/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs
+++ b/CryptoExchange.Net.UnitTests/TestImplementations/TestBaseClient.cs
@@ -1,9 +1,6 @@
using System;
-using System.Collections.Generic;
using System.IO;
-using System.Net.Http;
using System.Text;
-using System.Text.Json.Serialization;
using System.Threading.Tasks;
using CryptoExchange.Net.Authentication;
using CryptoExchange.Net.Clients;
@@ -13,7 +10,6 @@ using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Errors;
using CryptoExchange.Net.Objects.Options;
using CryptoExchange.Net.SharedApis;
-using CryptoExchange.Net.UnitTests.TestImplementations;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs b/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs
index 2035639..fefd893 100644
--- a/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs
+++ b/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs
@@ -13,13 +13,12 @@ using CryptoExchange.Net.Authentication;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;
using CryptoExchange.Net.Clients;
-using CryptoExchange.Net.SharedApis;
using Microsoft.Extensions.Options;
using System.Linq;
using CryptoExchange.Net.Converters.SystemTextJson;
using System.Text.Json.Serialization;
-using CryptoExchange.Net.Objects.Errors;
using System.Net.Http.Headers;
+using CryptoExchange.Net.SharedApis;
namespace CryptoExchange.Net.UnitTests.TestImplementations
{
diff --git a/CryptoExchange.Net.UnitTests/TestSerializerContext.cs b/CryptoExchange.Net.UnitTests/TestSerializerContext.cs
index e3dfe5b..ce23994 100644
--- a/CryptoExchange.Net.UnitTests/TestSerializerContext.cs
+++ b/CryptoExchange.Net.UnitTests/TestSerializerContext.cs
@@ -1,10 +1,6 @@
using CryptoExchange.Net.UnitTests.TestImplementations;
-using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
using System.Text.Json.Serialization;
-using System.Threading.Tasks;
namespace CryptoExchange.Net.UnitTests
{
diff --git a/CryptoExchange.Net/Authentication/AuthenticationProvider.cs b/CryptoExchange.Net/Authentication/AuthenticationProvider.cs
index d1c5a28..f6a291d 100644
--- a/CryptoExchange.Net/Authentication/AuthenticationProvider.cs
+++ b/CryptoExchange.Net/Authentication/AuthenticationProvider.cs
@@ -5,7 +5,6 @@ using CryptoExchange.Net.Objects;
using System;
using System.Collections.Generic;
using System.Globalization;
-using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
diff --git a/CryptoExchange.Net/Clients/BaseApiClient.cs b/CryptoExchange.Net/Clients/BaseApiClient.cs
index 7806e1f..c2eab52 100644
--- a/CryptoExchange.Net/Clients/BaseApiClient.cs
+++ b/CryptoExchange.Net/Clients/BaseApiClient.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
using CryptoExchange.Net.Authentication;
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Objects;
+using CryptoExchange.Net.Interfaces.Clients;
using CryptoExchange.Net.Objects.Errors;
using CryptoExchange.Net.Objects.Options;
using CryptoExchange.Net.SharedApis;
diff --git a/CryptoExchange.Net/Clients/BaseClient.cs b/CryptoExchange.Net/Clients/BaseClient.cs
index bd91d53..919346e 100644
--- a/CryptoExchange.Net/Clients/BaseClient.cs
+++ b/CryptoExchange.Net/Clients/BaseClient.cs
@@ -1,7 +1,6 @@
using CryptoExchange.Net.Authentication;
using CryptoExchange.Net.Objects.Options;
using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Logging.Abstractions;
using System;
using System.Collections.Generic;
using System.Threading;
diff --git a/CryptoExchange.Net/Clients/BaseRestClient.cs b/CryptoExchange.Net/Clients/BaseRestClient.cs
index 797dace..057127d 100644
--- a/CryptoExchange.Net/Clients/BaseRestClient.cs
+++ b/CryptoExchange.Net/Clients/BaseRestClient.cs
@@ -1,5 +1,5 @@
using System.Linq;
-using CryptoExchange.Net.Interfaces;
+using CryptoExchange.Net.Interfaces.Clients;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
diff --git a/CryptoExchange.Net/Clients/BaseSocketClient.cs b/CryptoExchange.Net/Clients/BaseSocketClient.cs
index f5054e2..6296998 100644
--- a/CryptoExchange.Net/Clients/BaseSocketClient.cs
+++ b/CryptoExchange.Net/Clients/BaseSocketClient.cs
@@ -1,4 +1,4 @@
-using CryptoExchange.Net.Interfaces;
+using CryptoExchange.Net.Interfaces.Clients;
using CryptoExchange.Net.Logging.Extensions;
using CryptoExchange.Net.Objects.Options;
using CryptoExchange.Net.Objects.Sockets;
@@ -9,7 +9,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-using System.Xml.Linq;
namespace CryptoExchange.Net.Clients
{
diff --git a/CryptoExchange.Net/Clients/CryptoRestClient.cs b/CryptoExchange.Net/Clients/CryptoRestClient.cs
index d4ee0bb..1907661 100644
--- a/CryptoExchange.Net/Clients/CryptoRestClient.cs
+++ b/CryptoExchange.Net/Clients/CryptoRestClient.cs
@@ -1,8 +1,5 @@
-using CryptoExchange.Net.Interfaces;
-using Microsoft.Extensions.DependencyInjection;
+using CryptoExchange.Net.Interfaces.Clients;
using System;
-using System.Collections.Generic;
-using System.Linq;
namespace CryptoExchange.Net.Clients
{
diff --git a/CryptoExchange.Net/Clients/CryptoSocketClient.cs b/CryptoExchange.Net/Clients/CryptoSocketClient.cs
index 5c33ef9..4e41c63 100644
--- a/CryptoExchange.Net/Clients/CryptoSocketClient.cs
+++ b/CryptoExchange.Net/Clients/CryptoSocketClient.cs
@@ -1,4 +1,4 @@
-using CryptoExchange.Net.Interfaces;
+using CryptoExchange.Net.Interfaces.Clients;
using System;
namespace CryptoExchange.Net.Clients
diff --git a/CryptoExchange.Net/Clients/RestApiClient.cs b/CryptoExchange.Net/Clients/RestApiClient.cs
index bfa1b2a..ddaeaf7 100644
--- a/CryptoExchange.Net/Clients/RestApiClient.cs
+++ b/CryptoExchange.Net/Clients/RestApiClient.cs
@@ -1,6 +1,7 @@
using CryptoExchange.Net.Caching;
using CryptoExchange.Net.Converters.MessageParsing.DynamicConverters;
using CryptoExchange.Net.Interfaces;
+using CryptoExchange.Net.Interfaces.Clients;
using CryptoExchange.Net.Logging.Extensions;
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Errors;
@@ -18,7 +19,6 @@ using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
-using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/Clients/SocketApiClient.cs b/CryptoExchange.Net/Clients/SocketApiClient.cs
index 86203cb..f08cd08 100644
--- a/CryptoExchange.Net/Clients/SocketApiClient.cs
+++ b/CryptoExchange.Net/Clients/SocketApiClient.cs
@@ -1,5 +1,6 @@
using CryptoExchange.Net.Converters.MessageParsing.DynamicConverters;
using CryptoExchange.Net.Interfaces;
+using CryptoExchange.Net.Interfaces.Clients;
using CryptoExchange.Net.Logging.Extensions;
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Errors;
@@ -8,7 +9,11 @@ using CryptoExchange.Net.Objects.Sockets;
using CryptoExchange.Net.RateLimiting;
using CryptoExchange.Net.RateLimiting.Interfaces;
using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Sockets.Default;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
using CryptoExchange.Net.Sockets.HighPerf;
+using CryptoExchange.Net.Sockets.HighPerf.Interfaces;
+using CryptoExchange.Net.Sockets.Interfaces;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Concurrent;
@@ -29,16 +34,18 @@ namespace CryptoExchange.Net.Clients
#region Fields
///
public IWebsocketFactory SocketFactory { get; set; } = new WebsocketFactory();
+ ///
+ public IHighPerfConnectionFactory? HighPerfConnectionFactory { get; set; }
///
/// List of socket connections currently connecting/connected
///
- protected internal ConcurrentDictionary socketConnections = new();
+ protected internal ConcurrentDictionary _socketConnections = new();
///
/// List of HighPerf socket connections currently connecting/connected
///
- protected internal ConcurrentDictionary highPerfSocketConnections = new();
+ protected internal ConcurrentDictionary _highPerfSocketConnections = new();
///
/// Semaphore used while creating sockets
@@ -100,25 +107,25 @@ namespace CryptoExchange.Net.Clients
{
get
{
- if (socketConnections.IsEmpty)
+ if (_socketConnections.IsEmpty)
return 0;
- return socketConnections.Sum(s => s.Value.IncomingKbps);
+ return _socketConnections.Sum(s => s.Value.IncomingKbps);
}
}
///
- public int CurrentConnections => socketConnections.Count;
+ public int CurrentConnections => _socketConnections.Count;
///
public int CurrentSubscriptions
{
get
{
- if (socketConnections.IsEmpty)
+ if (_socketConnections.IsEmpty)
return 0;
- return socketConnections.Sum(s => s.Value.UserSubscriptionCount);
+ return _socketConnections.Sum(s => s.Value.UserSubscriptionCount);
}
}
@@ -569,7 +576,7 @@ namespace CryptoExchange.Net.Clients
protected void AddSystemSubscription(SystemSubscription systemSubscription)
{
systemSubscriptions.Add(systemSubscription);
- foreach (var connection in socketConnections.Values)
+ foreach (var connection in _socketConnections.Values)
connection.AddSubscription(systemSubscription);
}
@@ -615,7 +622,7 @@ namespace CryptoExchange.Net.Clients
///
protected virtual async Task> GetSocketConnection(string address, bool authenticated, bool dedicatedRequestConnection, CancellationToken ct, string? topic = null)
{
- var socketQuery = socketConnections.Where(s => s.Value.Tag.TrimEnd('/') == address.TrimEnd('/')
+ var socketQuery = _socketConnections.Where(s => s.Value.Tag.TrimEnd('/') == address.TrimEnd('/')
&& s.Value.ApiClient.GetType() == GetType()
&& (AllowTopicsOnTheSameConnection || !s.Value.Topics.Contains(topic)))
.Select(x => x.Value)
@@ -668,7 +675,7 @@ namespace CryptoExchange.Net.Clients
if (connection != null)
{
if (connection.UserSubscriptionCount < ClientOptions.SocketSubscriptionsCombineTarget
- || (socketConnections.Count >= (ApiOptions.MaxSocketConnections ?? ClientOptions.MaxSocketConnections) && socketConnections.All(s => s.Value.UserSubscriptionCount >= ClientOptions.SocketSubscriptionsCombineTarget)))
+ || (_socketConnections.Count >= (ApiOptions.MaxSocketConnections ?? ClientOptions.MaxSocketConnections) && _socketConnections.All(s => s.Value.UserSubscriptionCount >= ClientOptions.SocketSubscriptionsCombineTarget)))
{
// Use existing socket if it has less than target connections OR it has the least connections and we can't make new
return new CallResult(connection);
@@ -720,27 +727,6 @@ namespace CryptoExchange.Net.Clients
IHighPerfConnectionFactory connectionFactory,
CancellationToken ct)
{
- var socketQuery = highPerfSocketConnections.Where(s => s.Value.Tag.TrimEnd('/') == address.TrimEnd('/')
- && s.Value.ApiClient.GetType() == GetType()
- && s.Value.UpdateType == typeof(TUpdateType))
- .Select(x => x.Value)
- .ToList();
-
-
- socketQuery = socketQuery.Where(s => (s.Status == SocketStatus.None || s.Status == SocketStatus.Connected)
- && s.Connected).ToList();
-
- var connection = socketQuery.OrderBy(s => s.UserSubscriptionCount).FirstOrDefault();
- if (connection != null)
- {
- if (connection.UserSubscriptionCount < ClientOptions.SocketSubscriptionsCombineTarget
- || (socketConnections.Count >= (ApiOptions.MaxSocketConnections ?? ClientOptions.MaxSocketConnections) && socketConnections.All(s => s.Value.UserSubscriptionCount >= ClientOptions.SocketSubscriptionsCombineTarget)))
- {
- // Use existing socket if it has less than target connections OR it has the least connections and we can't make new
- return new CallResult>((HighPerfSocketConnection)connection);
- }
- }
-
var connectionAddress = await GetConnectionUrlAsync(address, false).ConfigureAwait(false);
if (!connectionAddress)
{
@@ -794,9 +780,9 @@ namespace CryptoExchange.Net.Clients
if (connectResult)
{
if (socketConnection is SocketConnection sc)
- socketConnections.TryAdd(socketConnection.SocketId, sc);
+ _socketConnections.TryAdd(socketConnection.SocketId, sc);
else if (socketConnection is HighPerfSocketConnection hsc)
- highPerfSocketConnections.TryAdd(socketConnection.SocketId, hsc);
+ _highPerfSocketConnections.TryAdd(socketConnection.SocketId, hsc);
return connectResult;
}
@@ -832,7 +818,7 @@ namespace CryptoExchange.Net.Clients
{
Subscription? subscription = null;
SocketConnection? connection = null;
- foreach (var socket in socketConnections.Values.ToList())
+ foreach (var socket in _socketConnections.Values.ToList())
{
subscription = socket.GetSubscription(subscriptionId);
if (subscription != null)
@@ -870,14 +856,14 @@ namespace CryptoExchange.Net.Clients
///
public virtual async Task UnsubscribeAllAsync()
{
- var sum = socketConnections.Sum(s => s.Value.UserSubscriptionCount);
+ var sum = _socketConnections.Sum(s => s.Value.UserSubscriptionCount);
if (sum == 0)
return;
- _logger.UnsubscribingAll(socketConnections.Sum(s => s.Value.UserSubscriptionCount));
+ _logger.UnsubscribingAll(_socketConnections.Sum(s => s.Value.UserSubscriptionCount));
var tasks = new List();
{
- var socketList = socketConnections.Values;
+ var socketList = _socketConnections.Values;
foreach (var connection in socketList)
{
foreach(var subscription in connection.Subscriptions.Where(x => x.UserSubscription))
@@ -894,10 +880,10 @@ namespace CryptoExchange.Net.Clients
///
public virtual async Task ReconnectAsync()
{
- _logger.ReconnectingAllConnections(socketConnections.Count);
+ _logger.ReconnectingAllConnections(_socketConnections.Count);
var tasks = new List();
{
- var socketList = socketConnections.Values;
+ var socketList = _socketConnections.Values;
foreach (var sub in socketList)
tasks.Add(sub.TriggerReconnectAsync());
}
@@ -929,7 +915,7 @@ namespace CryptoExchange.Net.Clients
base.SetOptions(options);
if ((!previousProxyIsSet && options.Proxy == null)
- || socketConnections.IsEmpty)
+ || _socketConnections.IsEmpty)
{
return;
}
@@ -937,7 +923,7 @@ namespace CryptoExchange.Net.Clients
_logger.LogInformation("Reconnecting websockets to apply proxy");
// Update proxy, also triggers reconnect
- foreach (var connection in socketConnections)
+ foreach (var connection in _socketConnections)
_ = connection.Value.UpdateProxy(options.Proxy);
}
@@ -957,14 +943,14 @@ namespace CryptoExchange.Net.Clients
public SocketApiClientState GetState(bool includeSubDetails = true)
{
var connectionStates = new List();
- foreach (var socketIdAndConnection in socketConnections)
+ foreach (var socketIdAndConnection in _socketConnections)
{
SocketConnection connection = socketIdAndConnection.Value;
SocketConnectionState connectionState = connection.GetState(includeSubDetails);
connectionStates.Add(connectionState);
}
- return new SocketApiClientState(socketConnections.Count, CurrentSubscriptions, IncomingKbps, connectionStates);
+ return new SocketApiClientState(_socketConnections.Count, CurrentSubscriptions, IncomingKbps, connectionStates);
}
///
@@ -1026,7 +1012,7 @@ namespace CryptoExchange.Net.Clients
_disposing = true;
var tasks = new List();
{
- var socketList = socketConnections.Values.Where(x => x.UserSubscriptionCount > 0 || x.Connected);
+ var socketList = _socketConnections.Values.Where(x => x.UserSubscriptionCount > 0 || x.Connected);
if (socketList.Any())
_logger.DisposingSocketClient();
diff --git a/CryptoExchange.Net/Converters/JsonSerializerContextCache.cs b/CryptoExchange.Net/Converters/JsonSerializerContextCache.cs
index 55cb48f..46473c1 100644
--- a/CryptoExchange.Net/Converters/JsonSerializerContextCache.cs
+++ b/CryptoExchange.Net/Converters/JsonSerializerContextCache.cs
@@ -1,7 +1,5 @@
using System;
using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Text;
using System.Text.Json.Serialization;
namespace CryptoExchange.Net.Converters
diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/IRestMessageHandler.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/IRestMessageHandler.cs
index 0e62939..2152a67 100644
--- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/IRestMessageHandler.cs
+++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/IRestMessageHandler.cs
@@ -1,9 +1,6 @@
using CryptoExchange.Net.Objects;
-using System;
-using System.Collections.Generic;
using System.IO;
using System.Net.Http.Headers;
-using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs
index bccb2db..5314aae 100644
--- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs
+++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters
{
diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageEvalutorFieldReference.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageEvalutorFieldReference.cs
index 6ceaedd..df93ba7 100644
--- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageEvalutorFieldReference.cs
+++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageEvalutorFieldReference.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters
+namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters
{
internal class MessageEvalutorFieldReference
{
diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResult.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResult.cs
index 74f5822..1ab9f18 100644
--- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResult.cs
+++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResult.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Text;
namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters
{
diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResultItem.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResultItem.cs
index 4618ccb..bd9c4d5 100644
--- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResultItem.cs
+++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/SearchResultItem.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters
+namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters
{
///
/// Search result value
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs
index c378ebc..d45a41c 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/ArrayConverter.cs
@@ -1,15 +1,12 @@
using System;
-using System.Collections.Concurrent;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Text.Json.Serialization;
using System.Text.Json;
-using CryptoExchange.Net.Attributes;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Threading;
-using System.Diagnostics;
namespace CryptoExchange.Net.Converters.SystemTextJson
{
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/BoolConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/BoolConverter.cs
index 75ce2b6..775ddde 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/BoolConverter.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/BoolConverter.cs
@@ -1,6 +1,5 @@
using Microsoft.Extensions.Logging;
using System;
-using System.Diagnostics;
using System.Runtime.Serialization;
using System.Text.Json;
using System.Text.Json.Serialization;
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs
index c327079..1bdc623 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
-using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs
index 09e7ed6..3d3d882 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs
@@ -1,6 +1,5 @@
using Microsoft.Extensions.Logging;
using System;
-using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Text.Json;
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/DecimalConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/DecimalConverter.cs
index 5d7b694..66c1ddf 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/DecimalConverter.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/DecimalConverter.cs
@@ -1,5 +1,4 @@
using System;
-using System.Globalization;
using System.Text.Json;
using System.Text.Json.Serialization;
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs
index 4f1ab08..b4b02bd 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/EnumConverter.cs
@@ -1,10 +1,8 @@
using CryptoExchange.Net.Attributes;
using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Logging.Abstractions;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
-using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Reflection;
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/EnumIntWriterConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/EnumIntWriterConverter.cs
index 9a0c9a7..a5d9b79 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/EnumIntWriterConverter.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/EnumIntWriterConverter.cs
@@ -1,5 +1,4 @@
using System;
-using System.Globalization;
using System.Text.Json;
using System.Text.Json.Serialization;
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonRestMessageHandler.cs b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonRestMessageHandler.cs
index 2851b3f..8f36280 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonRestMessageHandler.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonRestMessageHandler.cs
@@ -1,22 +1,16 @@
using CryptoExchange.Net.Converters.MessageParsing.DynamicConverters;
-using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Errors;
-using CryptoExchange.Net.Objects.Options;
-using CryptoExchange.Net.Requests;
using System;
-using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
-using System.Net.Http;
using System.Net.Http.Headers;
-using System.Text;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
-namespace CryptoExchange.Net.Converters.SystemTextJson.MessageConverters
+namespace CryptoExchange.Net.Converters.SystemTextJson.MessageHandlers
{
///
/// JSON REST message handler
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketMessageHandler.cs b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketMessageHandler.cs
index e3d3719..80a7f77 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketMessageHandler.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketMessageHandler.cs
@@ -7,7 +7,7 @@ using System.Net.WebSockets;
using System.Text;
using System.Text.Json;
-namespace CryptoExchange.Net.Converters.SystemTextJson
+namespace CryptoExchange.Net.Converters.SystemTextJson.MessageHandlers
{
///
/// JSON WebSocket message handler, sequentially read the JSON and looks for specific predefined fields to identify the message
@@ -87,7 +87,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson
x.Field is ArrayFieldReference arrayFieldRef
&& arrayFieldRef.ArrayIndex == arrayField.ArrayIndex
&& arrayFieldRef.Depth == arrayField.Depth
- && (arrayFieldRef.Constraint == null && arrayField.Constraint == null)).ToList();
+ && arrayFieldRef.Constraint == null && arrayField.Constraint == null).ToList();
}
else if (field is PropertyFieldReference propField)
{
@@ -95,7 +95,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson
x.Field is PropertyFieldReference propFieldRef
&& propFieldRef.PropertyName.SequenceEqual(propField.PropertyName)
&& propFieldRef.Depth == propField.Depth
- && (propFieldRef.Constraint == null && propFieldRef.Constraint == null)).ToList();
+ && propFieldRef.Constraint == null && propFieldRef.Constraint == null).ToList();
}
foreach(var sameSearchField in existingSameSearchField)
@@ -118,7 +118,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson
_searchFields.Add(new MessageEvalutorFieldReference(field)
{
SkipReading = evaluator.TypeIdentifierCallback == null && field.Constraint == null,
- ForceEvaluator = !existingSameSearchField.Any() ? (evaluator.ForceIfFound ? evaluator : null) : null,
+ ForceEvaluator = !existingSameSearchField.Any() ? evaluator.ForceIfFound ? evaluator : null : null,
OverlappingField = overlapping.Any()
});
@@ -243,10 +243,8 @@ namespace CryptoExchange.Net.Converters.SystemTextJson
if (readArrayValues)
{
if (reader.TokenType != JsonTokenType.StartArray)
- {
// error
return null;
- }
var sb = new StringBuilder();
reader.Read();// Read start array
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketPreloadMessageHandler.cs b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketPreloadMessageHandler.cs
index f623f32..22ae049 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketPreloadMessageHandler.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/MessageHandlers/JsonSocketPreloadMessageHandler.cs
@@ -3,7 +3,7 @@ using System;
using System.Net.WebSockets;
using System.Text.Json;
-namespace CryptoExchange.Net.Converters.SystemTextJson
+namespace CryptoExchange.Net.Converters.SystemTextJson.MessageHandlers
{
///
/// JSON WebSocket message handler, reads the json data info a JsonDocument after which the data can be inspected to identify the message
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/NullableEnumConverterFactory.cs b/CryptoExchange.Net/Converters/SystemTextJson/NullableEnumConverterFactory.cs
index 4cd7e68..7b63b8d 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/NullableEnumConverterFactory.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/NullableEnumConverterFactory.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Text;
using System.Text.Json.Serialization.Metadata;
using System.Text.Json;
using System.Text.Json.Serialization;
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SerializationModel.cs b/CryptoExchange.Net/Converters/SystemTextJson/SerializationModel.cs
index 3c958ec..5a95cdc 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/SerializationModel.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/SerializationModel.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace CryptoExchange.Net.Converters.SystemTextJson
{
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SharedQuantityConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/SharedQuantityConverter.cs
index bedfebe..6d838f9 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/SharedQuantityConverter.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/SharedQuantityConverter.cs
@@ -1,7 +1,5 @@
using CryptoExchange.Net.SharedApis;
using System;
-using System.Collections.Generic;
-using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SharedSymbolConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/SharedSymbolConverter.cs
index 6622305..ac2238d 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/SharedSymbolConverter.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/SharedSymbolConverter.cs
@@ -1,7 +1,5 @@
using CryptoExchange.Net.SharedApis;
using System;
-using System.Collections.Generic;
-using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs b/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs
index c464f23..25e5d8a 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageAccessor.cs
@@ -2,7 +2,6 @@
using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects;
using System;
-using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Text;
diff --git a/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageSerializer.cs b/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageSerializer.cs
index f3cf340..4a628d5 100644
--- a/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageSerializer.cs
+++ b/CryptoExchange.Net/Converters/SystemTextJson/SystemTextJsonMessageSerializer.cs
@@ -1,8 +1,6 @@
using CryptoExchange.Net.Interfaces;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
-using System.Text.Json.Serialization;
-using System.Text.Json.Serialization.Metadata;
namespace CryptoExchange.Net.Converters.SystemTextJson
{
diff --git a/CryptoExchange.Net/ExchangeHelpers.cs b/CryptoExchange.Net/ExchangeHelpers.cs
index c531adc..5b6a7be 100644
--- a/CryptoExchange.Net/ExchangeHelpers.cs
+++ b/CryptoExchange.Net/ExchangeHelpers.cs
@@ -1,7 +1,6 @@
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Sockets;
using CryptoExchange.Net.SharedApis;
-using CryptoExchange.Net.Sockets;
using System;
using System.Collections.Generic;
using System.Globalization;
diff --git a/CryptoExchange.Net/ExchangeSymbolCache.cs b/CryptoExchange.Net/ExchangeSymbolCache.cs
index 765b1e1..2b237d4 100644
--- a/CryptoExchange.Net/ExchangeSymbolCache.cs
+++ b/CryptoExchange.Net/ExchangeSymbolCache.cs
@@ -3,7 +3,6 @@ using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
namespace CryptoExchange.Net
{
diff --git a/CryptoExchange.Net/Interfaces/IBaseApiClient.cs b/CryptoExchange.Net/Interfaces/Clients/IBaseApiClient.cs
similarity index 96%
rename from CryptoExchange.Net/Interfaces/IBaseApiClient.cs
rename to CryptoExchange.Net/Interfaces/Clients/IBaseApiClient.cs
index 21867c8..d7469be 100644
--- a/CryptoExchange.Net/Interfaces/IBaseApiClient.cs
+++ b/CryptoExchange.Net/Interfaces/Clients/IBaseApiClient.cs
@@ -1,10 +1,9 @@
using CryptoExchange.Net.Authentication;
-using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Options;
using CryptoExchange.Net.SharedApis;
using System;
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Interfaces.Clients
{
///
/// Base api client
diff --git a/CryptoExchange.Net/Interfaces/ICryptoRestClient.cs b/CryptoExchange.Net/Interfaces/Clients/ICryptoRestClient.cs
similarity index 88%
rename from CryptoExchange.Net/Interfaces/ICryptoRestClient.cs
rename to CryptoExchange.Net/Interfaces/Clients/ICryptoRestClient.cs
index c3966eb..249c8fc 100644
--- a/CryptoExchange.Net/Interfaces/ICryptoRestClient.cs
+++ b/CryptoExchange.Net/Interfaces/Clients/ICryptoRestClient.cs
@@ -1,6 +1,6 @@
using System;
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Interfaces.Clients
{
///
/// Client for accessing REST API's for different exchanges
diff --git a/CryptoExchange.Net/Interfaces/ICryptoSocketClient.cs b/CryptoExchange.Net/Interfaces/Clients/ICryptoSocketClient.cs
similarity index 89%
rename from CryptoExchange.Net/Interfaces/ICryptoSocketClient.cs
rename to CryptoExchange.Net/Interfaces/Clients/ICryptoSocketClient.cs
index 867448c..69cb54d 100644
--- a/CryptoExchange.Net/Interfaces/ICryptoSocketClient.cs
+++ b/CryptoExchange.Net/Interfaces/Clients/ICryptoSocketClient.cs
@@ -1,6 +1,6 @@
using System;
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Interfaces.Clients
{
///
/// Client for accessing Websocket API's for different exchanges
diff --git a/CryptoExchange.Net/Interfaces/IRestApiClient.cs b/CryptoExchange.Net/Interfaces/Clients/IRestApiClient.cs
similarity index 89%
rename from CryptoExchange.Net/Interfaces/IRestApiClient.cs
rename to CryptoExchange.Net/Interfaces/Clients/IRestApiClient.cs
index 9d96fbd..09b667d 100644
--- a/CryptoExchange.Net/Interfaces/IRestApiClient.cs
+++ b/CryptoExchange.Net/Interfaces/Clients/IRestApiClient.cs
@@ -1,4 +1,4 @@
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Interfaces.Clients
{
///
/// Base rest API client
diff --git a/CryptoExchange.Net/Interfaces/IRestClient.cs b/CryptoExchange.Net/Interfaces/Clients/IRestClient.cs
similarity index 92%
rename from CryptoExchange.Net/Interfaces/IRestClient.cs
rename to CryptoExchange.Net/Interfaces/Clients/IRestClient.cs
index a2592a3..09d197f 100644
--- a/CryptoExchange.Net/Interfaces/IRestClient.cs
+++ b/CryptoExchange.Net/Interfaces/Clients/IRestClient.cs
@@ -1,7 +1,7 @@
using System;
using CryptoExchange.Net.Objects.Options;
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Interfaces.Clients
{
///
/// Base class for rest API implementations
diff --git a/CryptoExchange.Net/Interfaces/ISocketApiClient.cs b/CryptoExchange.Net/Interfaces/Clients/ISocketApiClient.cs
similarity index 88%
rename from CryptoExchange.Net/Interfaces/ISocketApiClient.cs
rename to CryptoExchange.Net/Interfaces/Clients/ISocketApiClient.cs
index fdc49bd..47722cc 100644
--- a/CryptoExchange.Net/Interfaces/ISocketApiClient.cs
+++ b/CryptoExchange.Net/Interfaces/Clients/ISocketApiClient.cs
@@ -1,9 +1,11 @@
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Options;
using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
+using CryptoExchange.Net.Sockets.HighPerf.Interfaces;
using System.Threading.Tasks;
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Interfaces.Clients
{
///
/// Socket API client
@@ -27,6 +29,10 @@ namespace CryptoExchange.Net.Interfaces
///
IWebsocketFactory SocketFactory { get; set; }
///
+ /// High performance websocket factory
+ ///
+ IHighPerfConnectionFactory? HighPerfConnectionFactory { get; set; }
+ ///
/// Current client options
///
SocketExchangeOptions ClientOptions { get; }
diff --git a/CryptoExchange.Net/Interfaces/ISocketClient.cs b/CryptoExchange.Net/Interfaces/Clients/ISocketClient.cs
similarity index 97%
rename from CryptoExchange.Net/Interfaces/ISocketClient.cs
rename to CryptoExchange.Net/Interfaces/Clients/ISocketClient.cs
index 42337ec..ec7a9e3 100644
--- a/CryptoExchange.Net/Interfaces/ISocketClient.cs
+++ b/CryptoExchange.Net/Interfaces/Clients/ISocketClient.cs
@@ -3,7 +3,7 @@ using System.Threading.Tasks;
using CryptoExchange.Net.Objects.Options;
using CryptoExchange.Net.Objects.Sockets;
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Interfaces.Clients
{
///
/// Base class for socket API implementations
diff --git a/CryptoExchange.Net/Interfaces/IMessageAccessor.cs b/CryptoExchange.Net/Interfaces/IMessageAccessor.cs
index 1c3c28c..d0a3773 100644
--- a/CryptoExchange.Net/Interfaces/IMessageAccessor.cs
+++ b/CryptoExchange.Net/Interfaces/IMessageAccessor.cs
@@ -1,7 +1,6 @@
using CryptoExchange.Net.Converters.MessageParsing;
using CryptoExchange.Net.Objects;
using System;
-using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/Interfaces/IMessageSerializer.cs b/CryptoExchange.Net/Interfaces/IMessageSerializer.cs
index 01009a8..be4730c 100644
--- a/CryptoExchange.Net/Interfaces/IMessageSerializer.cs
+++ b/CryptoExchange.Net/Interfaces/IMessageSerializer.cs
@@ -1,6 +1,4 @@
-using System.Diagnostics.CodeAnalysis;
-
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Interfaces
{
///
/// Serializer interface
diff --git a/CryptoExchange.Net/Interfaces/IRequest.cs b/CryptoExchange.Net/Interfaces/IRequest.cs
index 612bf3b..739593a 100644
--- a/CryptoExchange.Net/Interfaces/IRequest.cs
+++ b/CryptoExchange.Net/Interfaces/IRequest.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading;
diff --git a/CryptoExchange.Net/Interfaces/IResponse.cs b/CryptoExchange.Net/Interfaces/IResponse.cs
index a0dce86..068cccf 100644
--- a/CryptoExchange.Net/Interfaces/IResponse.cs
+++ b/CryptoExchange.Net/Interfaces/IResponse.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http.Headers;
diff --git a/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs b/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs
index 21c2bb7..609373f 100644
--- a/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs
+++ b/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using CryptoExchange.Net.Objects;
diff --git a/CryptoExchange.Net/LibraryHelpers.cs b/CryptoExchange.Net/LibraryHelpers.cs
index 9201ce4..1113620 100644
--- a/CryptoExchange.Net/LibraryHelpers.cs
+++ b/CryptoExchange.Net/LibraryHelpers.cs
@@ -2,11 +2,8 @@
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Net;
using System.Net.Http;
-using System.Text;
-using System.Threading.Tasks;
namespace CryptoExchange.Net
{
@@ -71,7 +68,7 @@ namespace CryptoExchange.Net
{
var reservedLength = brokerId.Length + ClientOrderIdSeparator.Length;
- if ((clientOrderId?.Length + reservedLength) > maxLength)
+ if (clientOrderId?.Length + reservedLength > maxLength)
return clientOrderId!;
if (!string.IsNullOrEmpty(clientOrderId))
@@ -157,43 +154,5 @@ namespace CryptoExchange.Net
return httpHandler;
#endif
}
-
- ///
- /// Waits for all of the ValueTasks to complete
- ///
- public static async ValueTask WhenAll(IReadOnlyList tasks)
- {
- if (tasks.Count == 0)
- return;
-
- List? toAwait = null;
-
- int completedTasks = 0;
-
- for (int i = 0; i < tasks.Count; i++)
- {
- if (!tasks[i].IsCompletedSuccessfully)
- {
- toAwait ??= new();
- toAwait.Add(tasks[i].AsTask());
- }
- else
- {
- completedTasks++;
- }
- }
-
- if (completedTasks != tasks.Count)
- await Task.WhenAll(toAwait!).ConfigureAwait(false);
- }
-
- ///
- /// Waits for all of the ValueTasks to complete
- ///
- public static ValueTask WhenAll(IEnumerable tasks)
- {
- return WhenAll(tasks.ToList());
- }
-
}
}
diff --git a/CryptoExchange.Net/Logging/Extensions/SocketConnectionLoggingExtension.cs b/CryptoExchange.Net/Logging/Extensions/SocketConnectionLoggingExtension.cs
index 0997933..3487ce9 100644
--- a/CryptoExchange.Net/Logging/Extensions/SocketConnectionLoggingExtension.cs
+++ b/CryptoExchange.Net/Logging/Extensions/SocketConnectionLoggingExtension.cs
@@ -1,6 +1,6 @@
using System;
using System.Net.WebSockets;
-using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Sockets.Default;
using Microsoft.Extensions.Logging;
namespace CryptoExchange.Net.Logging.Extensions
diff --git a/CryptoExchange.Net/Objects/AssetAlias.cs b/CryptoExchange.Net/Objects/AssetAlias.cs
index 5ef6bc7..062c314 100644
--- a/CryptoExchange.Net/Objects/AssetAlias.cs
+++ b/CryptoExchange.Net/Objects/AssetAlias.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.Objects
+namespace CryptoExchange.Net.Objects
{
///
/// An alias used by the exchange for an asset commonly known by another name
diff --git a/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs b/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs
index a50462b..1bda64f 100644
--- a/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs
+++ b/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs
@@ -1,7 +1,5 @@
using System;
-using System.Collections.Generic;
using System.Linq;
-using System.Text;
namespace CryptoExchange.Net.Objects
{
diff --git a/CryptoExchange.Net/Objects/CallResult.cs b/CryptoExchange.Net/Objects/CallResult.cs
index 8b48d71..74f79ac 100644
--- a/CryptoExchange.Net/Objects/CallResult.cs
+++ b/CryptoExchange.Net/Objects/CallResult.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.SharedApis;
using System;
-using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Net;
using System.Net.Http;
diff --git a/CryptoExchange.Net/Objects/Enums.cs b/CryptoExchange.Net/Objects/Enums.cs
index 0d4b18c..00a392d 100644
--- a/CryptoExchange.Net/Objects/Enums.cs
+++ b/CryptoExchange.Net/Objects/Enums.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Attributes;
-
-namespace CryptoExchange.Net.Objects
+namespace CryptoExchange.Net.Objects
{
///
/// What to do when a request would exceed the rate limit
diff --git a/CryptoExchange.Net/Objects/Error.cs b/CryptoExchange.Net/Objects/Error.cs
index 99bcaa5..ea72909 100644
--- a/CryptoExchange.Net/Objects/Error.cs
+++ b/CryptoExchange.Net/Objects/Error.cs
@@ -79,7 +79,20 @@ namespace CryptoExchange.Net.Objects
///
public override string ToString()
{
- return ErrorCode != null ? $"[{GetType().Name}.{ErrorType}] {ErrorCode}: {Message ?? ErrorDescription}" : $"[{GetType().Name}.{ErrorType}] {Message ?? ErrorDescription}";
+ return Code != null
+ ? $"[{GetType().Name}.{ErrorType}] {Code}: {GetErrorDescription()}"
+ : $"[{GetType().Name}.{ErrorType}] {GetErrorDescription()}";
+ }
+
+ private string GetErrorDescription()
+ {
+ if (!string.IsNullOrEmpty(Message))
+ return Message!;
+
+ if (ErrorDescription != "Unknown error" || Exception == null)
+ return ErrorDescription!;
+
+ return Exception.Message;
}
}
diff --git a/CryptoExchange.Net/Objects/Errors/ErrorEvaluator.cs b/CryptoExchange.Net/Objects/Errors/ErrorEvaluator.cs
index b245115..364163e 100644
--- a/CryptoExchange.Net/Objects/Errors/ErrorEvaluator.cs
+++ b/CryptoExchange.Net/Objects/Errors/ErrorEvaluator.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace CryptoExchange.Net.Objects.Errors
{
diff --git a/CryptoExchange.Net/Objects/Errors/ErrorInfo.cs b/CryptoExchange.Net/Objects/Errors/ErrorInfo.cs
index 0dd38c6..98a5440 100644
--- a/CryptoExchange.Net/Objects/Errors/ErrorInfo.cs
+++ b/CryptoExchange.Net/Objects/Errors/ErrorInfo.cs
@@ -1,6 +1,4 @@
-using System;
-
-namespace CryptoExchange.Net.Objects.Errors
+namespace CryptoExchange.Net.Objects.Errors
{
///
/// Error info
diff --git a/CryptoExchange.Net/Objects/Errors/ErrorMapping.cs b/CryptoExchange.Net/Objects/Errors/ErrorMapping.cs
index 219b3c9..3a144a0 100644
--- a/CryptoExchange.Net/Objects/Errors/ErrorMapping.cs
+++ b/CryptoExchange.Net/Objects/Errors/ErrorMapping.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
namespace CryptoExchange.Net.Objects.Errors
{
diff --git a/CryptoExchange.Net/Objects/Errors/ErrorType.cs b/CryptoExchange.Net/Objects/Errors/ErrorType.cs
index 7af5017..4545773 100644
--- a/CryptoExchange.Net/Objects/Errors/ErrorType.cs
+++ b/CryptoExchange.Net/Objects/Errors/ErrorType.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.Objects.Errors
+namespace CryptoExchange.Net.Objects.Errors
{
///
/// Type of error
diff --git a/CryptoExchange.Net/Objects/Options/RestExchangeOptions.cs b/CryptoExchange.Net/Objects/Options/RestExchangeOptions.cs
index f685a3e..51477fc 100644
--- a/CryptoExchange.Net/Objects/Options/RestExchangeOptions.cs
+++ b/CryptoExchange.Net/Objects/Options/RestExchangeOptions.cs
@@ -1,7 +1,5 @@
using CryptoExchange.Net.Authentication;
using System;
-using System.Net;
-using System.Net.Http;
namespace CryptoExchange.Net.Objects.Options
{
diff --git a/CryptoExchange.Net/Objects/Options/UpdateOptions.cs b/CryptoExchange.Net/Objects/Options/UpdateOptions.cs
index 9fc9ed0..3970caa 100644
--- a/CryptoExchange.Net/Objects/Options/UpdateOptions.cs
+++ b/CryptoExchange.Net/Objects/Options/UpdateOptions.cs
@@ -1,7 +1,5 @@
using CryptoExchange.Net.Authentication;
using System;
-using System.Collections.Generic;
-using System.Text;
namespace CryptoExchange.Net.Objects.Options
{
diff --git a/CryptoExchange.Net/Sockets/ProcessQueue.cs b/CryptoExchange.Net/Objects/ProcessQueue.cs
similarity index 97%
rename from CryptoExchange.Net/Sockets/ProcessQueue.cs
rename to CryptoExchange.Net/Objects/ProcessQueue.cs
index ab93b72..7fb3121 100644
--- a/CryptoExchange.Net/Sockets/ProcessQueue.cs
+++ b/CryptoExchange.Net/Objects/ProcessQueue.cs
@@ -1,11 +1,10 @@
-using CryptoExchange.Net.Objects;
-using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging;
using System;
using System.Threading;
using System.Threading.Channels;
using System.Threading.Tasks;
-namespace CryptoExchange.Net.Sockets
+namespace CryptoExchange.Net.Objects
{
///
diff --git a/CryptoExchange.Net/Objects/Sockets/HighPerfUpdateSubscription.cs b/CryptoExchange.Net/Objects/Sockets/HighPerfUpdateSubscription.cs
index 8bf9b76..9cc21a9 100644
--- a/CryptoExchange.Net/Objects/Sockets/HighPerfUpdateSubscription.cs
+++ b/CryptoExchange.Net/Objects/Sockets/HighPerfUpdateSubscription.cs
@@ -1,4 +1,4 @@
-using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Sockets.HighPerf;
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs b/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs
index b871663..f128c79 100644
--- a/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs
+++ b/CryptoExchange.Net/Objects/Sockets/UpdateSubscription.cs
@@ -1,4 +1,4 @@
-using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Sockets.Default;
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs b/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs
index 9953691..8057716 100644
--- a/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs
+++ b/CryptoExchange.Net/Objects/Sockets/WebSocketParameters.cs
@@ -1,7 +1,6 @@
using CryptoExchange.Net.RateLimiting.Interfaces;
using System;
using System.Collections.Generic;
-using System.IO.Pipelines;
using System.Text;
namespace CryptoExchange.Net.Objects.Sockets
diff --git a/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs b/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs
index 5a71974..98498f5 100644
--- a/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs
+++ b/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Interfaces;
using System;
-using System.Collections.Generic;
namespace CryptoExchange.Net.OrderBook
{
diff --git a/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs b/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs
index f23110c..6d16d29 100644
--- a/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs
+++ b/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Interfaces;
using System;
-using System.Collections.Generic;
namespace CryptoExchange.Net.OrderBook
{
diff --git a/CryptoExchange.Net/RateLimiting/RateLimitUpdateEvent.cs b/CryptoExchange.Net/RateLimiting/RateLimitUpdateEvent.cs
index 341b822..83ddc6a 100644
--- a/CryptoExchange.Net/RateLimiting/RateLimitUpdateEvent.cs
+++ b/CryptoExchange.Net/RateLimiting/RateLimitUpdateEvent.cs
@@ -1,5 +1,4 @@
-using CryptoExchange.Net.Objects;
-using System;
+using System;
namespace CryptoExchange.Net.RateLimiting
{
diff --git a/CryptoExchange.Net/Requests/Request.cs b/CryptoExchange.Net/Requests/Request.cs
index 31e2ba8..698db12 100644
--- a/CryptoExchange.Net/Requests/Request.cs
+++ b/CryptoExchange.Net/Requests/Request.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
diff --git a/CryptoExchange.Net/Requests/RequestFactory.cs b/CryptoExchange.Net/Requests/RequestFactory.cs
index 7523d18..b70064e 100644
--- a/CryptoExchange.Net/Requests/RequestFactory.cs
+++ b/CryptoExchange.Net/Requests/RequestFactory.cs
@@ -1,5 +1,4 @@
using System;
-using System.Net;
using System.Net.Http;
using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects;
diff --git a/CryptoExchange.Net/Requests/Response.cs b/CryptoExchange.Net/Requests/Response.cs
index 593c6cf..84ce275 100644
--- a/CryptoExchange.Net/Requests/Response.cs
+++ b/CryptoExchange.Net/Requests/Response.cs
@@ -1,7 +1,5 @@
using System;
-using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedAccountType.cs b/CryptoExchange.Net/SharedApis/Enums/SharedAccountType.cs
index e3bb862..c7fb54b 100644
--- a/CryptoExchange.Net/SharedApis/Enums/SharedAccountType.cs
+++ b/CryptoExchange.Net/SharedApis/Enums/SharedAccountType.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Account type
diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTickerType.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTickerType.cs
index ccf6355..1525219 100644
--- a/CryptoExchange.Net/SharedApis/Enums/SharedTickerType.cs
+++ b/CryptoExchange.Net/SharedApis/Enums/SharedTickerType.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Type of ticker
diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTpSlSide.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTpSlSide.cs
index c8cd0ab..d5bae45 100644
--- a/CryptoExchange.Net/SharedApis/Enums/SharedTpSlSide.cs
+++ b/CryptoExchange.Net/SharedApis/Enums/SharedTpSlSide.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Take Profit / Stop Loss side
diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderDirection.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderDirection.cs
index 1aefff9..8bd7791 100644
--- a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderDirection.cs
+++ b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderDirection.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// The order direction when order trigger parameters are reached
diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderStatus.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderStatus.cs
index 60082a9..e38e051 100644
--- a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderStatus.cs
+++ b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerOrderStatus.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Trigger order status
diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceDirection.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceDirection.cs
index be513d2..12e78f1 100644
--- a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceDirection.cs
+++ b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceDirection.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Price direction for trigger order
diff --git a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceType.cs b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceType.cs
index 84a2a1c..1a12792 100644
--- a/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceType.cs
+++ b/CryptoExchange.Net/SharedApis/Enums/SharedTriggerPriceType.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Price direction for trigger order
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/ISharedClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/ISharedClient.cs
index eca53e9..da7a1a4 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/ISharedClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/ISharedClient.cs
@@ -1,5 +1,4 @@
-using CryptoExchange.Net.Objects;
-using System;
+using System;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs
index 0553db7..057cb36 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderClientIdRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderClientIdRestClient.cs
index f937403..2f8e925 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderClientIdRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderClientIdRestClient.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
using System.Threading;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs
index 42b2ef1..5c3af62 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs
index 672ef51..81b27db 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs
index f96b9b3..8343139 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTpSlRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTpSlRestClient.cs
index adc9f94..9f62e8b 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTpSlRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTpSlRestClient.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
using System.Threading;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTriggerOrderRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTriggerOrderRestClient.cs
index 176f2ef..bdda1c8 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTriggerOrderRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTriggerOrderRestClient.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs
index 103055d..4c2299f 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs
index 69f2f5c..0b02528 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs
index 8097fff..5905927 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs
index a688386..bea8a31 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs
index 8190fc4..adf3e6d 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs
index 0229d4a..c50758e 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IFeeRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IFeeRestClient.cs
index 3a012cb..9f73ff0 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IFeeRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IFeeRestClient.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
using System.Threading;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs
index 06cee87..a71ac1e 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs
index 714b7d5..ea1aad8 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs
index e14c64d..c20d9ce 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITransferRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITransferRestClient.cs
index 23eabab..32e0f07 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITransferRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITransferRestClient.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs
index 3316888..c2f3600 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderClientIdRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderClientIdRestClient.cs
index c77a76c..438eb44 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderClientIdRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderClientIdRestClient.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
using System.Threading;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs
index cb5e816..c4d1a32 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs
index 520f07c..78cb0f4 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs
index 5e9a8f3..68f18d6 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTriggerOrderRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTriggerOrderRestClient.cs
index a3009c7..871019c 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTriggerOrderRestClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTriggerOrderRestClient.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading;
+using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs
index db22ab6..dfd4270 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects.Sockets;
using System;
-using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs
index 03cba56..ce99896 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using System.Threading.Tasks;
using System.Threading;
using CryptoExchange.Net.Objects.Sockets;
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs
index 24c66a6..9f2611d 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects.Sockets;
using System;
-using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs
index 4d25ffb..d642c1d 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects.Sockets;
using System;
-using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs
index e6a8f21..78721ef 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects.Sockets;
using System;
-using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs
index 031e9f8..b6d2b9d 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects.Sockets;
using System;
-using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs
index 12d24b2..20a59d6 100644
--- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs
+++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects.Sockets;
using System;
-using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs b/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs
index 968738f..8023bca 100644
--- a/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs
+++ b/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Xml.Linq;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs b/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs
index 0f469a5..7861d21 100644
--- a/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs
+++ b/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects;
using System;
-using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Net;
using System.Net.Http;
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/EndpointOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/EndpointOptions.cs
index 8d4d552..58b8d1d 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/EndpointOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/EndpointOptions.cs
@@ -1,7 +1,6 @@
using CryptoExchange.Net.Objects;
using System;
using System.Collections.Generic;
-using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs
index a5e496f..c171259 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects;
using System;
-using System.Collections.Generic;
using System.Linq;
using System.Text;
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs
index a7ff8e9..074c6a0 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects;
using System;
-using System.Collections.Generic;
using System.Linq;
using System.Text;
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickerOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickerOptions.cs
index 564cd40..fee07ca 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickerOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickerOptions.cs
@@ -1,8 +1,4 @@
-using CryptoExchange.Net.Objects;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
+using System.Text;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickersOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickersOptions.cs
index 1d988e6..84885a7 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickersOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetTickersOptions.cs
@@ -1,8 +1,4 @@
-using CryptoExchange.Net.Objects;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
+using System.Text;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PaginatedEndpointOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PaginatedEndpointOptions.cs
index 10e98bb..ed0e496 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PaginatedEndpointOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PaginatedEndpointOptions.cs
@@ -1,5 +1,4 @@
-using CryptoExchange.Net.Objects;
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
using System.Text;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesOrderOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesOrderOptions.cs
index 8a7c9b1..4683cce 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesOrderOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesOrderOptions.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects;
using System;
-using System.Collections.Generic;
using System.Linq;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesTriggerOrderOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesTriggerOrderOptions.cs
index a6e43db..e68f671 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesTriggerOrderOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceFuturesTriggerOrderOptions.cs
@@ -1,7 +1,4 @@
using CryptoExchange.Net.Objects;
-using System;
-using System.Collections.Generic;
-using System.Linq;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs
index 7e3c2e3..de6a6f2 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects;
using System;
-using System.Collections.Generic;
using System.Linq;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotTriggerOrderOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotTriggerOrderOptions.cs
index ce7fd30..b9323a0 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotTriggerOrderOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotTriggerOrderOptions.cs
@@ -1,7 +1,4 @@
using CryptoExchange.Net.Objects;
-using System;
-using System.Collections.Generic;
-using System.Linq;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeKlineOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeKlineOptions.cs
index 826c964..ac6f58b 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeKlineOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeKlineOptions.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects;
using System;
-using System.Collections.Generic;
using System.Linq;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs
index c2baed2..8c1abe7 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Objects;
using System;
-using System.Collections.Generic;
using System.Linq;
namespace CryptoExchange.Net.SharedApis
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickerOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickerOptions.cs
index a2ccfa8..de629fb 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickerOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickerOptions.cs
@@ -1,9 +1,4 @@
-using CryptoExchange.Net.Objects;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Options for subscribing to ticker updates
diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickersOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickersOptions.cs
index e3f70d0..3852d9f 100644
--- a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickersOptions.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeTickersOptions.cs
@@ -1,9 +1,4 @@
-using CryptoExchange.Net.Objects;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Options for subscribing to ticker updates
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetAssetsRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetAssetsRequest.cs
index 7ef35a0..e46f3ec 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/GetAssetsRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetAssetsRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to retrieve a list of supported assets
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetBalancesRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetBalancesRequest.cs
index 50a4852..78595a9 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/GetBalancesRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetBalancesRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to retrieve balance info for the user
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetFeeRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetFeeRequest.cs
index 429e258..adce155 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/GetFeeRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetFeeRequest.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to retrieve trading fees
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetOpenOrdersRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetOpenOrdersRequest.cs
index 9f35a10..f4062ee 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/GetOpenOrdersRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetOpenOrdersRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to retrieve the current open orders
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionHistoryRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionHistoryRequest.cs
index cc2ec6e..7bbb209 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionHistoryRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionHistoryRequest.cs
@@ -1,5 +1,4 @@
-using CryptoExchange.Net.Objects;
-using System;
+using System;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionModeRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionModeRequest.cs
index 7ff9b11..6aaae50 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionModeRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionModeRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to retrieve the current position mode
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionsRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionsRequest.cs
index bed5794..3f6e7c5 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionsRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetPositionsRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to retrieve open positions
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetSymbolsRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetSymbolsRequest.cs
index d90a10e..59fa978 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/GetSymbolsRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetSymbolsRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to retrieve symbol info
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/GetTickersRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/GetTickersRequest.cs
index c3267f4..389e4e1 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/GetTickersRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/GetTickersRequest.cs
@@ -1,7 +1,4 @@
-
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to retrieve all symbol tickers
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/KeepAliveListenKeyRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/KeepAliveListenKeyRequest.cs
index 410f257..459a97f 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/KeepAliveListenKeyRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/KeepAliveListenKeyRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to keep-alive the update stream for the specified listen key
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/SetPositionModeRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/SetPositionModeRequest.cs
index 0d65f0c..75b613c 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/SetPositionModeRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/SetPositionModeRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to change the current position mode
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/StartListenKeyRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/StartListenKeyRequest.cs
index b6dcb45..1f6c81b 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/StartListenKeyRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/StartListenKeyRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to start the update stream for the current user
diff --git a/CryptoExchange.Net/SharedApis/Models/Rest/StopListenKeyRequest.cs b/CryptoExchange.Net/SharedApis/Models/Rest/StopListenKeyRequest.cs
index 4a59a8a..015cc13 100644
--- a/CryptoExchange.Net/SharedApis/Models/Rest/StopListenKeyRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Rest/StopListenKeyRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to stop the update stream for the specific listen key
diff --git a/CryptoExchange.Net/SharedApis/Models/SharedSymbolRequest.cs b/CryptoExchange.Net/SharedApis/Models/SharedSymbolRequest.cs
index a50355c..c277887 100644
--- a/CryptoExchange.Net/SharedApis/Models/SharedSymbolRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/SharedSymbolRequest.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections;
using System.Collections.Generic;
using System.Linq;
diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeAllTickersRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeAllTickersRequest.cs
index c2e38cb..8eca717 100644
--- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeAllTickersRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeAllTickersRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to subscribe to ticker updates for all symbols
diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeBalancesRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeBalancesRequest.cs
index 0179434..d9945fb 100644
--- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeBalancesRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeBalancesRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to subscribe to balance updates
diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeFuturesOrderRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeFuturesOrderRequest.cs
index a27ba51..716b9c9 100644
--- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeFuturesOrderRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeFuturesOrderRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to subscribe to futures order updates
diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribePositionRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribePositionRequest.cs
index 6ead352..b7c74a5 100644
--- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribePositionRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribePositionRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to subscribe to position updates
diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeTickerRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeTickerRequest.cs
index 46f3636..406bd6f 100644
--- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeTickerRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeTickerRequest.cs
@@ -1,5 +1,4 @@
-using System.Collections;
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeUserTradeRequest.cs b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeUserTradeRequest.cs
index d4df63c..a851f34 100644
--- a/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeUserTradeRequest.cs
+++ b/CryptoExchange.Net/SharedApis/Models/Socket/SubscribeUserTradeRequest.cs
@@ -1,6 +1,4 @@
-using CryptoExchange.Net.Objects;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Request to subscribe to user trade updates
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs
index 7151653..00dd301 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs
index 528ed6d..7f2e24d 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Trading fee info
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTriggerOrder.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTriggerOrder.cs
index 49fdbf8..734bf71 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTriggerOrder.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTriggerOrder.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs
index d4e85c9..7057c41 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs
@@ -1,5 +1,4 @@
using CryptoExchange.Net.Interfaces;
-using System.Collections.Generic;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTriggerOrder.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTriggerOrder.cs
index fedade0..ee2a13f 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTriggerOrder.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTriggerOrder.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace CryptoExchange.Net.SharedApis
{
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSymbolModel.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSymbolModel.cs
index d15849f..70cf848 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSymbolModel.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSymbolModel.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.SharedApis
+namespace CryptoExchange.Net.SharedApis
{
///
/// Symbol model
diff --git a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs b/CryptoExchange.Net/Sockets/Default/CryptoExchangeWebSocketClient.cs
similarity index 98%
rename from CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs
rename to CryptoExchange.Net/Sockets/Default/CryptoExchangeWebSocketClient.cs
index 6bff803..e6b15e0 100644
--- a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs
+++ b/CryptoExchange.Net/Sockets/Default/CryptoExchangeWebSocketClient.cs
@@ -1,23 +1,21 @@
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Logging.Extensions;
+using CryptoExchange.Net.Logging.Extensions;
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Errors;
using CryptoExchange.Net.Objects.Sockets;
using CryptoExchange.Net.RateLimiting;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
using Microsoft.Extensions.Logging;
using System;
using System.Buffers;
using System.Collections.Concurrent;
-using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
-namespace CryptoExchange.Net.Sockets
+namespace CryptoExchange.Net.Sockets.Default
{
///
/// A wrapper around the ClientWebSocket
@@ -227,9 +225,7 @@ namespace CryptoExchange.Net.Sockets
catch (Exception e)
{
if (ct.IsCancellationRequested)
- {
_logger.SocketConnectingCanceled(Id);
- }
else if (!_ctsSource.IsCancellationRequested)
{
// if _ctsSource was canceled this was already logged
@@ -246,9 +242,7 @@ namespace CryptoExchange.Net.Sockets
}
if (_socket.HttpStatusCode == HttpStatusCode.Unauthorized)
- {
return new CallResult(new ServerError(new ErrorInfo(ErrorType.Unauthorized, "Server returned status code `401` when `101` was expected")));
- }
#else
// ClientWebSocket.HttpStatusCode is only available in .NET6+ https://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket.httpstatuscode?view=net-8.0
// Try to read 429 from the message instead
@@ -456,9 +450,7 @@ namespace CryptoExchange.Net.Sockets
try
{
if (_socket.State == WebSocketState.CloseReceived)
- {
await _socket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "Closing", default).ConfigureAwait(false);
- }
else if (_socket.State == WebSocketState.Open)
{
await _socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", default).ConfigureAwait(false);
@@ -612,11 +604,9 @@ namespace CryptoExchange.Net.Sockets
catch (OperationCanceledException ex)
{
if (ex.InnerException?.InnerException?.Message.Contains("KeepAliveTimeout") == true)
- {
// Specific case that the websocket connection got closed because of a ping frame timeout
// Unfortunately doesn't seem to be a nicer way to catch
_logger.SocketPingTimeout(Id);
- }
if (_closeTask?.IsCompleted != false)
_closeTask = CloseInternalAsync();
@@ -695,16 +685,12 @@ namespace CryptoExchange.Net.Sockets
UpdateReceivedMessages();
if (receiveResult?.MessageType == WebSocketMessageType.Close)
- {
// Received close message
break;
- }
if (receiveResult == null || _ctsSource.IsCancellationRequested)
- {
// Error during receiving or cancellation requested, stop.
break;
- }
if (multiPartMessage)
{
@@ -774,11 +760,9 @@ namespace CryptoExchange.Net.Sockets
catch (OperationCanceledException ex)
{
if (ex.InnerException?.InnerException?.Message.Contains("KeepAliveTimeout") == true)
- {
// Specific case that the websocket connection got closed because of a ping frame timeout
// Unfortunately doesn't seem to be a nicer way to catch
_logger.SocketPingTimeout(Id);
- }
if (_closeTask?.IsCompleted != false)
_closeTask = CloseInternalAsync();
@@ -852,16 +836,12 @@ namespace CryptoExchange.Net.Sockets
UpdateReceivedMessages();
if (receiveResult.MessageType == WebSocketMessageType.Close)
- {
// Received close message
break;
- }
if (_ctsSource.IsCancellationRequested)
- {
// Error during receiving or cancellation requested, stop.
break;
- }
if (multiPartMessage)
{
diff --git a/CryptoExchange.Net/Interfaces/IWebsocket.cs b/CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocket.cs
similarity index 98%
rename from CryptoExchange.Net/Interfaces/IWebsocket.cs
rename to CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocket.cs
index bc360d0..3aa4f13 100644
--- a/CryptoExchange.Net/Interfaces/IWebsocket.cs
+++ b/CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocket.cs
@@ -4,7 +4,7 @@ using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Sockets.Default.Interfaces
{
///
/// Websocket connection interface
diff --git a/CryptoExchange.Net/Interfaces/IWebsocketFactory.cs b/CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocketFactory.cs
similarity index 89%
rename from CryptoExchange.Net/Interfaces/IWebsocketFactory.cs
rename to CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocketFactory.cs
index 6b2487e..e0b76ae 100644
--- a/CryptoExchange.Net/Interfaces/IWebsocketFactory.cs
+++ b/CryptoExchange.Net/Sockets/Default/Interfaces/IWebsocketFactory.cs
@@ -1,9 +1,9 @@
using CryptoExchange.Net.Objects.Sockets;
-using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Sockets.HighPerf.Interfaces;
using Microsoft.Extensions.Logging;
using System.IO.Pipelines;
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Sockets.Default.Interfaces
{
///
/// Websocket factory interface
diff --git a/CryptoExchange.Net/Sockets/SocketConnection.cs b/CryptoExchange.Net/Sockets/Default/SocketConnection.cs
similarity index 98%
rename from CryptoExchange.Net/Sockets/SocketConnection.cs
rename to CryptoExchange.Net/Sockets/Default/SocketConnection.cs
index 88ec24b..f4903df 100644
--- a/CryptoExchange.Net/Sockets/SocketConnection.cs
+++ b/CryptoExchange.Net/Sockets/Default/SocketConnection.cs
@@ -4,6 +4,8 @@ using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Logging.Extensions;
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
+using CryptoExchange.Net.Sockets.Interfaces;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
@@ -14,7 +16,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
-namespace CryptoExchange.Net.Sockets
+namespace CryptoExchange.Net.Sockets.Default
{
///
/// State of a the connection
@@ -339,8 +341,8 @@ namespace CryptoExchange.Net.Sockets
Status = SocketStatus.Closed;
Authenticated = false;
- if (ApiClient.socketConnections.ContainsKey(SocketId))
- ApiClient.socketConnections.TryRemove(SocketId, out _);
+ if (ApiClient._socketConnections.ContainsKey(SocketId))
+ ApiClient._socketConnections.TryRemove(SocketId, out _);
lock (_listenersLock)
{
@@ -812,8 +814,8 @@ namespace CryptoExchange.Net.Sockets
if (Status == SocketStatus.Closed || Status == SocketStatus.Disposed)
return;
- if (ApiClient.socketConnections.ContainsKey(SocketId))
- ApiClient.socketConnections.TryRemove(SocketId, out _);
+ if (ApiClient._socketConnections.ContainsKey(SocketId))
+ ApiClient._socketConnections.TryRemove(SocketId, out _);
lock (_listenersLock)
{
@@ -1037,9 +1039,7 @@ namespace CryptoExchange.Net.Sockets
public virtual ValueTask SendAsync(int requestId, T obj, int weight)
{
if (_serializer is IByteMessageSerializer byteSerializer)
- {
return SendBytesAsync(requestId, byteSerializer.Serialize(obj), weight);
- }
else if (_serializer is IStringMessageSerializer stringSerializer)
{
if (obj is string str)
@@ -1145,7 +1145,7 @@ namespace CryptoExchange.Net.Sockets
lock (_listenersLock)
{
anyAuthenticated = _listeners.OfType().Any(s => s.Authenticated)
- || (DedicatedRequestConnection.IsDedicatedRequestConnection && DedicatedRequestConnection.Authenticated);
+ || DedicatedRequestConnection.IsDedicatedRequestConnection && DedicatedRequestConnection.Authenticated;
}
if (anyAuthenticated)
diff --git a/CryptoExchange.Net/Sockets/Subscription.cs b/CryptoExchange.Net/Sockets/Default/Subscription.cs
similarity index 98%
rename from CryptoExchange.Net/Sockets/Subscription.cs
rename to CryptoExchange.Net/Sockets/Default/Subscription.cs
index eadd95a..d52284a 100644
--- a/CryptoExchange.Net/Sockets/Subscription.cs
+++ b/CryptoExchange.Net/Sockets/Default/Subscription.cs
@@ -1,14 +1,12 @@
using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects;
-using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Sockets.Interfaces;
using Microsoft.Extensions.Logging;
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-namespace CryptoExchange.Net.Sockets
+namespace CryptoExchange.Net.Sockets.Default
{
///
/// Socket subscription
diff --git a/CryptoExchange.Net/Sockets/SystemSubscription.cs b/CryptoExchange.Net/Sockets/Default/SystemSubscription.cs
similarity index 81%
rename from CryptoExchange.Net/Sockets/SystemSubscription.cs
rename to CryptoExchange.Net/Sockets/Default/SystemSubscription.cs
index bef4ec0..0d610aa 100644
--- a/CryptoExchange.Net/Sockets/SystemSubscription.cs
+++ b/CryptoExchange.Net/Sockets/Default/SystemSubscription.cs
@@ -1,10 +1,7 @@
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Objects;
-using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Objects;
using Microsoft.Extensions.Logging;
-using System;
-namespace CryptoExchange.Net.Sockets
+namespace CryptoExchange.Net.Sockets.Default
{
///
/// A system subscription
diff --git a/CryptoExchange.Net/Sockets/WebsocketFactory.cs b/CryptoExchange.Net/Sockets/Default/WebsocketFactory.cs
similarity index 75%
rename from CryptoExchange.Net/Sockets/WebsocketFactory.cs
rename to CryptoExchange.Net/Sockets/Default/WebsocketFactory.cs
index 81602f3..a046c00 100644
--- a/CryptoExchange.Net/Sockets/WebsocketFactory.cs
+++ b/CryptoExchange.Net/Sockets/Default/WebsocketFactory.cs
@@ -1,11 +1,11 @@
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
+using CryptoExchange.Net.Sockets.HighPerf;
+using CryptoExchange.Net.Sockets.HighPerf.Interfaces;
using Microsoft.Extensions.Logging;
-using System;
using System.IO.Pipelines;
-using System.Threading.Tasks;
-namespace CryptoExchange.Net.Sockets
+namespace CryptoExchange.Net.Sockets.Default
{
///
/// Default websocket factory implementation
diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnection.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnection.cs
index c978536..7a2a495 100644
--- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnection.cs
+++ b/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnection.cs
@@ -1,9 +1,8 @@
using CryptoExchange.Net.Clients;
-using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
using Microsoft.Extensions.Logging;
using System;
-using System.Linq;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
@@ -44,15 +43,8 @@ namespace CryptoExchange.Net.Sockets.HighPerf
#pragma warning restore IL3050 // Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling.
#pragma warning restore IL2026 // Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code
{
- if (_typedSubscriptions.Count == 1)
- {
- // If there is only one listener we can prevent the overhead of the await which will call a `ToList`
- await DelegateToSubscription(_typedSubscriptions[0], update!).ConfigureAwait(false);
- continue;
- }
-
- var tasks = _typedSubscriptions.Select(sub => DelegateToSubscription(sub, update!));
- await LibraryHelpers.WhenAll(tasks).ConfigureAwait(false);
+ foreach(var sub in _typedSubscriptions)
+ DelegateToSubscription(_typedSubscriptions[0], update!);
}
}
catch (OperationCanceledException) { }
diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnectionFactory.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnectionFactory.cs
index 2aa4f27..df53e5c 100644
--- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnectionFactory.cs
+++ b/CryptoExchange.Net/Sockets/HighPerf/HighPerfJsonSocketConnectionFactory.cs
@@ -1,6 +1,7 @@
using CryptoExchange.Net.Clients;
-using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
+using CryptoExchange.Net.Sockets.HighPerf.Interfaces;
using Microsoft.Extensions.Logging;
using System.Text.Json;
diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfPeriodicTaskRegistration.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfPeriodicTaskRegistration.cs
deleted file mode 100644
index b6618a0..0000000
--- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfPeriodicTaskRegistration.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-
-namespace CryptoExchange.Net.Sockets.HighPerf
-{
- ///
- /// Periodic task registration
- ///
- public class HighPerfPeriodicTaskRegistration
- {
- ///
- /// Identifier
- ///
- public string Identifier { get; set; } = string.Empty;
- ///
- /// Interval of query
- ///
- public TimeSpan Interval { get; set; }
- ///
- /// Delegate for getting the request which should be send
- ///
- public Func GetRequestDelegate { get; set; } = null!;
- }
-}
diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfSocketConnection.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfSocketConnection.cs
index bda4ecd..1646d2e 100644
--- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfSocketConnection.cs
+++ b/CryptoExchange.Net/Sockets/HighPerf/HighPerfSocketConnection.cs
@@ -11,8 +11,12 @@ using CryptoExchange.Net.Clients;
using CryptoExchange.Net.Logging.Extensions;
using System.Threading;
using System.IO.Pipelines;
+using CryptoExchange.Net.Sockets.Interfaces;
+using CryptoExchange.Net.Sockets.Default;
+using CryptoExchange.Net.Sockets.HighPerf.Interfaces;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
-namespace CryptoExchange.Net.Sockets
+namespace CryptoExchange.Net.Sockets.HighPerf
{
///
/// A single socket connection focused on performance
@@ -165,8 +169,8 @@ namespace CryptoExchange.Net.Sockets
Status = SocketStatus.Closed;
_cts.CancelAfter(TimeSpan.FromSeconds(1)); // Cancel after 1 second to make sure we process pending messages from the pipe
- if (ApiClient.highPerfSocketConnections.ContainsKey(SocketId))
- ApiClient.highPerfSocketConnections.TryRemove(SocketId, out _);
+ if (ApiClient._highPerfSocketConnections.ContainsKey(SocketId))
+ ApiClient._highPerfSocketConnections.TryRemove(SocketId, out _);
await _processTask!.ConfigureAwait(false);
@@ -209,8 +213,8 @@ namespace CryptoExchange.Net.Sockets
if (Status == SocketStatus.Closed || Status == SocketStatus.Disposed)
return;
- if (ApiClient.socketConnections.ContainsKey(SocketId))
- ApiClient.socketConnections.TryRemove(SocketId, out _);
+ if (ApiClient._socketConnections.ContainsKey(SocketId))
+ ApiClient._socketConnections.TryRemove(SocketId, out _);
foreach (var subscription in Subscriptions)
{
@@ -275,9 +279,7 @@ namespace CryptoExchange.Net.Sockets
public virtual ValueTask SendAsync(T obj)
{
if (_serializer is IByteMessageSerializer byteSerializer)
- {
return SendBytesAsync(byteSerializer.Serialize(obj));
- }
else if (_serializer is IStringMessageSerializer stringSerializer)
{
if (obj is string str)
@@ -480,17 +482,16 @@ namespace CryptoExchange.Net.Sockets
///
/// Delegate the update to the listeners
///
- protected ValueTask DelegateToSubscription(HighPerfSubscription subscription, T update)
+ protected void DelegateToSubscription(HighPerfSubscription subscription, T update)
{
try
{
- return subscription.HandleAsync(update!);
+ subscription.HandleAsync(update!);
}
catch (Exception ex)
{
subscription.InvokeExceptionHandler(ex);
_logger.UserMessageProcessingFailed(SocketId, ex.Message, ex);
- return new ValueTask();
}
}
}
diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfSubscription.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfSubscription.cs
index 895887d..2630213 100644
--- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfSubscription.cs
+++ b/CryptoExchange.Net/Sockets/HighPerf/HighPerfSubscription.cs
@@ -1,8 +1,7 @@
using System;
using System.Threading;
-using System.Threading.Tasks;
-namespace CryptoExchange.Net.Sockets
+namespace CryptoExchange.Net.Sockets.HighPerf
{
///
/// Socket subscription
@@ -92,12 +91,12 @@ namespace CryptoExchange.Net.Sockets
///
public abstract class HighPerfSubscription : HighPerfSubscription
{
- private Func _handler;
+ private Action _handler;
///
/// ctor
///
- protected HighPerfSubscription(Func handler) : base()
+ protected HighPerfSubscription(Action handler) : base()
{
_handler = handler;
}
@@ -105,10 +104,10 @@ namespace CryptoExchange.Net.Sockets
///
/// Handle an update
///
- public ValueTask HandleAsync(TUpdateType update)
+ public void HandleAsync(TUpdateType update)
{
TotalInvocations++;
- return _handler.Invoke(update);
+ _handler.Invoke(update);
}
}
}
diff --git a/CryptoExchange.Net/Sockets/HighPerf/HighPerfWebSocketClient.cs b/CryptoExchange.Net/Sockets/HighPerf/HighPerfWebSocketClient.cs
index 5731000..9dae8e9 100644
--- a/CryptoExchange.Net/Sockets/HighPerf/HighPerfWebSocketClient.cs
+++ b/CryptoExchange.Net/Sockets/HighPerf/HighPerfWebSocketClient.cs
@@ -1,19 +1,18 @@
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Logging.Extensions;
+using CryptoExchange.Net.Logging.Extensions;
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Errors;
using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Sockets.HighPerf.Interfaces;
using Microsoft.Extensions.Logging;
using System;
using System.Buffers;
using System.IO.Pipelines;
using System.Net;
using System.Net.WebSockets;
-using System.Text;
using System.Threading;
using System.Threading.Tasks;
-namespace CryptoExchange.Net.Sockets
+namespace CryptoExchange.Net.Sockets.HighPerf
{
///
/// A high performance websocket client implementation
@@ -146,9 +145,7 @@ namespace CryptoExchange.Net.Sockets
catch (Exception e)
{
if (ct.IsCancellationRequested)
- {
_logger.SocketConnectingCanceled(Id);
- }
else if (!_ctsSource.IsCancellationRequested)
{
// if _ctsSource was canceled this was already logged
@@ -159,21 +156,15 @@ namespace CryptoExchange.Net.Sockets
{
#if (NET6_0_OR_GREATER)
if (_socket!.HttpStatusCode == HttpStatusCode.TooManyRequests)
- {
return new CallResult(new ServerRateLimitError(we.Message, we));
- }
if (_socket.HttpStatusCode == HttpStatusCode.Unauthorized)
- {
return new CallResult(new ServerError(new ErrorInfo(ErrorType.Unauthorized, "Server returned status code `401` when `101` was expected")));
- }
#else
// ClientWebSocket.HttpStatusCode is only available in .NET6+ https://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket.httpstatuscode?view=net-8.0
// Try to read 429 from the message instead
if (we.Message.Contains("429"))
- {
return new CallResult(new ServerRateLimitError(we.Message, we));
- }
#endif
}
@@ -280,9 +271,7 @@ namespace CryptoExchange.Net.Sockets
try
{
if (_socket!.State == WebSocketState.CloseReceived)
- {
await _socket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "Closing", default).ConfigureAwait(false);
- }
else if (_socket.State == WebSocketState.Open)
{
await _socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", default).ConfigureAwait(false);
@@ -350,11 +339,9 @@ namespace CryptoExchange.Net.Sockets
catch (OperationCanceledException ex)
{
if (ex.InnerException?.InnerException?.Message.Contains("KeepAliveTimeout") == true)
- {
// Specific case that the websocket connection got closed because of a ping frame timeout
// Unfortunately doesn't seem to be a nicer way to catch
_logger.SocketPingTimeout(Id);
- }
if (_closeTask?.IsCompleted != false)
_closeTask = CloseInternalAsync();
@@ -450,11 +437,9 @@ namespace CryptoExchange.Net.Sockets
catch (OperationCanceledException ex)
{
if (ex.InnerException?.InnerException?.Message.Contains("KeepAliveTimeout") == true)
- {
// Specific case that the websocket connection got closed because of a ping frame timeout
// Unfortunately doesn't seem to be a nicer way to catch
_logger.SocketPingTimeout(Id);
- }
if (_closeTask?.IsCompleted != false)
_closeTask = CloseInternalAsync();
diff --git a/CryptoExchange.Net/Sockets/HighPerf/IHighPerfConnectionFactory.cs b/CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfConnectionFactory.cs
similarity index 83%
rename from CryptoExchange.Net/Sockets/HighPerf/IHighPerfConnectionFactory.cs
rename to CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfConnectionFactory.cs
index 1ba68d0..406328c 100644
--- a/CryptoExchange.Net/Sockets/HighPerf/IHighPerfConnectionFactory.cs
+++ b/CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfConnectionFactory.cs
@@ -1,9 +1,9 @@
using CryptoExchange.Net.Clients;
-using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
using Microsoft.Extensions.Logging;
-namespace CryptoExchange.Net.Sockets.HighPerf
+namespace CryptoExchange.Net.Sockets.HighPerf.Interfaces
{
///
/// Factory for creating connections
diff --git a/CryptoExchange.Net/Interfaces/IHighPerfWebsocket.cs b/CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfWebsocket.cs
similarity index 96%
rename from CryptoExchange.Net/Interfaces/IHighPerfWebsocket.cs
rename to CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfWebsocket.cs
index 5f15f8f..cd81fce 100644
--- a/CryptoExchange.Net/Interfaces/IHighPerfWebsocket.cs
+++ b/CryptoExchange.Net/Sockets/HighPerf/Interfaces/IHighPerfWebsocket.cs
@@ -4,7 +4,7 @@ using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Sockets.HighPerf.Interfaces
{
///
/// Websocket connection interface
diff --git a/CryptoExchange.Net/Interfaces/IMessageProcessor.cs b/CryptoExchange.Net/Sockets/Interfaces/IMessageProcessor.cs
similarity index 85%
rename from CryptoExchange.Net/Interfaces/IMessageProcessor.cs
rename to CryptoExchange.Net/Sockets/Interfaces/IMessageProcessor.cs
index f225a2c..79dea44 100644
--- a/CryptoExchange.Net/Interfaces/IMessageProcessor.cs
+++ b/CryptoExchange.Net/Sockets/Interfaces/IMessageProcessor.cs
@@ -1,11 +1,9 @@
-using CryptoExchange.Net.Objects;
-using CryptoExchange.Net.Objects.Sockets;
-using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Interfaces;
+using CryptoExchange.Net.Objects;
+using CryptoExchange.Net.Sockets.Default;
using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-namespace CryptoExchange.Net.Interfaces
+namespace CryptoExchange.Net.Sockets.Interfaces
{
///
/// Message processor
diff --git a/CryptoExchange.Net/Sockets/ISocketConnection.cs b/CryptoExchange.Net/Sockets/Interfaces/ISocketConnection.cs
similarity index 97%
rename from CryptoExchange.Net/Sockets/ISocketConnection.cs
rename to CryptoExchange.Net/Sockets/Interfaces/ISocketConnection.cs
index 7768b64..4291be9 100644
--- a/CryptoExchange.Net/Sockets/ISocketConnection.cs
+++ b/CryptoExchange.Net/Sockets/Interfaces/ISocketConnection.cs
@@ -4,7 +4,7 @@ using System;
using System.Threading;
using System.Threading.Tasks;
-namespace CryptoExchange.Net.Sockets
+namespace CryptoExchange.Net.Sockets.Interfaces
{
///
/// Socket connection
diff --git a/CryptoExchange.Net/Sockets/MessageMatcher.cs b/CryptoExchange.Net/Sockets/MessageMatcher.cs
index f3d7cc5..d081477 100644
--- a/CryptoExchange.Net/Sockets/MessageMatcher.cs
+++ b/CryptoExchange.Net/Sockets/MessageMatcher.cs
@@ -1,11 +1,8 @@
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Objects;
-using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Objects;
+using CryptoExchange.Net.Sockets.Default;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace CryptoExchange.Net.Sockets
{
diff --git a/CryptoExchange.Net/Sockets/MessageRouter.cs b/CryptoExchange.Net/Sockets/MessageRouter.cs
index 9c7b28d..e948cb2 100644
--- a/CryptoExchange.Net/Sockets/MessageRouter.cs
+++ b/CryptoExchange.Net/Sockets/MessageRouter.cs
@@ -1,12 +1,8 @@
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Objects;
-using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Objects;
+using CryptoExchange.Net.Sockets.Default;
using System;
-using System.Collections;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace CryptoExchange.Net.Sockets
{
diff --git a/CryptoExchange.Net/Sockets/PeriodicTaskRegistration.cs b/CryptoExchange.Net/Sockets/PeriodicTaskRegistration.cs
index ad62cad..57b5027 100644
--- a/CryptoExchange.Net/Sockets/PeriodicTaskRegistration.cs
+++ b/CryptoExchange.Net/Sockets/PeriodicTaskRegistration.cs
@@ -1,4 +1,6 @@
using CryptoExchange.Net.Objects;
+using CryptoExchange.Net.Sockets.Default;
+using CryptoExchange.Net.Sockets.Interfaces;
using System;
namespace CryptoExchange.Net.Sockets
diff --git a/CryptoExchange.Net/Sockets/Query.cs b/CryptoExchange.Net/Sockets/Query.cs
index 01deee0..f734f08 100644
--- a/CryptoExchange.Net/Sockets/Query.cs
+++ b/CryptoExchange.Net/Sockets/Query.cs
@@ -1,9 +1,8 @@
using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects;
-using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Sockets.Default;
+using CryptoExchange.Net.Sockets.Interfaces;
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/Testing/Implementations/TestRequest.cs b/CryptoExchange.Net/Testing/Implementations/TestRequest.cs
index ed0b062..1cb84ec 100644
--- a/CryptoExchange.Net/Testing/Implementations/TestRequest.cs
+++ b/CryptoExchange.Net/Testing/Implementations/TestRequest.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Interfaces;
using System;
-using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
diff --git a/CryptoExchange.Net/Testing/Implementations/TestResponse.cs b/CryptoExchange.Net/Testing/Implementations/TestResponse.cs
index 413c882..17f587a 100644
--- a/CryptoExchange.Net/Testing/Implementations/TestResponse.cs
+++ b/CryptoExchange.Net/Testing/Implementations/TestResponse.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Interfaces;
using System;
-using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
diff --git a/CryptoExchange.Net/Testing/Implementations/TestSocket.cs b/CryptoExchange.Net/Testing/Implementations/TestSocket.cs
index 3cb9dd4..35ea438 100644
--- a/CryptoExchange.Net/Testing/Implementations/TestSocket.cs
+++ b/CryptoExchange.Net/Testing/Implementations/TestSocket.cs
@@ -1,12 +1,11 @@
using System;
using System.Net.WebSockets;
using System.Text;
-using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
-using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects;
-using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Sockets.Default;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
#pragma warning disable IL2026 // Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code
#pragma warning disable IL3050 // Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling.
diff --git a/CryptoExchange.Net/Testing/Implementations/TestWebsocketFactory.cs b/CryptoExchange.Net/Testing/Implementations/TestWebsocketFactory.cs
index 5a87aae..5739721 100644
--- a/CryptoExchange.Net/Testing/Implementations/TestWebsocketFactory.cs
+++ b/CryptoExchange.Net/Testing/Implementations/TestWebsocketFactory.cs
@@ -1,10 +1,10 @@
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Objects.Sockets;
-using CryptoExchange.Net.Sockets;
+using CryptoExchange.Net.Objects.Sockets;
+using CryptoExchange.Net.Sockets.Default;
+using CryptoExchange.Net.Sockets.Default.Interfaces;
+using CryptoExchange.Net.Sockets.HighPerf.Interfaces;
using Microsoft.Extensions.Logging;
using System;
using System.IO.Pipelines;
-using System.Threading.Tasks;
namespace CryptoExchange.Net.Testing.Implementations
{
diff --git a/CryptoExchange.Net/Testing/SocketIntegrationTest.cs b/CryptoExchange.Net/Testing/SocketIntegrationTest.cs
index e84c129..f099bcc 100644
--- a/CryptoExchange.Net/Testing/SocketIntegrationTest.cs
+++ b/CryptoExchange.Net/Testing/SocketIntegrationTest.cs
@@ -1,5 +1,4 @@
-using CryptoExchange.Net.Interfaces;
-using CryptoExchange.Net.Objects;
+using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Objects.Sockets;
using Microsoft.Extensions.Logging;
using System;
diff --git a/CryptoExchange.Net/Testing/SocketRequestValidator.cs b/CryptoExchange.Net/Testing/SocketRequestValidator.cs
index 24446cd..8787d03 100644
--- a/CryptoExchange.Net/Testing/SocketRequestValidator.cs
+++ b/CryptoExchange.Net/Testing/SocketRequestValidator.cs
@@ -1,6 +1,5 @@
using CryptoExchange.Net.Clients;
using CryptoExchange.Net.Objects;
-using CryptoExchange.Net.Objects.Sockets;
using CryptoExchange.Net.Testing.Comparers;
using System;
using System.Collections.Generic;
diff --git a/CryptoExchange.Net/Trackers/CompareValue.cs b/CryptoExchange.Net/Trackers/CompareValue.cs
index a6fe033..64531a3 100644
--- a/CryptoExchange.Net/Trackers/CompareValue.cs
+++ b/CryptoExchange.Net/Trackers/CompareValue.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace CryptoExchange.Net.Trackers
{
diff --git a/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs b/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs
index 11b7afc..c83b54a 100644
--- a/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs
+++ b/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs
@@ -1,7 +1,6 @@
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.SharedApis;
using System;
-using System.Collections.Generic;
using System.Threading.Tasks;
namespace CryptoExchange.Net.Trackers.Klines
diff --git a/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs b/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs
index 13b2ac0..3c475b5 100644
--- a/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs
+++ b/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs
@@ -6,7 +6,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using System;
using System.Collections.Generic;
-using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/Trackers/Klines/KlinesCompare.cs b/CryptoExchange.Net/Trackers/Klines/KlinesCompare.cs
index 6e1deea..3d1a2da 100644
--- a/CryptoExchange.Net/Trackers/Klines/KlinesCompare.cs
+++ b/CryptoExchange.Net/Trackers/Klines/KlinesCompare.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.Trackers.Klines
+namespace CryptoExchange.Net.Trackers.Klines
{
///
/// Klines statistics comparison
diff --git a/CryptoExchange.Net/Trackers/Klines/KlinesStats.cs b/CryptoExchange.Net/Trackers/Klines/KlinesStats.cs
index 2a832f1..f9c1793 100644
--- a/CryptoExchange.Net/Trackers/Klines/KlinesStats.cs
+++ b/CryptoExchange.Net/Trackers/Klines/KlinesStats.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace CryptoExchange.Net.Trackers.Klines
{
diff --git a/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs b/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs
index 4f08aea..2f81cd3 100644
--- a/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs
+++ b/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs
@@ -1,7 +1,6 @@
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.SharedApis;
using System;
-using System.Collections.Generic;
using System.Threading.Tasks;
namespace CryptoExchange.Net.Trackers.Trades
diff --git a/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs b/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs
index 6a39aa1..76c1732 100644
--- a/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs
+++ b/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs
@@ -6,7 +6,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using System;
using System.Collections.Generic;
-using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
diff --git a/CryptoExchange.Net/Trackers/Trades/TradesCompare.cs b/CryptoExchange.Net/Trackers/Trades/TradesCompare.cs
index 1d02593..3264f8e 100644
--- a/CryptoExchange.Net/Trackers/Trades/TradesCompare.cs
+++ b/CryptoExchange.Net/Trackers/Trades/TradesCompare.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace CryptoExchange.Net.Trackers.Trades
+namespace CryptoExchange.Net.Trackers.Trades
{
///
/// Trades statistics comparison
diff --git a/CryptoExchange.Net/Trackers/Trades/TradesStats.cs b/CryptoExchange.Net/Trackers/Trades/TradesStats.cs
index 74107ca..a0d2edb 100644
--- a/CryptoExchange.Net/Trackers/Trades/TradesStats.cs
+++ b/CryptoExchange.Net/Trackers/Trades/TradesStats.cs
@@ -1,6 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace CryptoExchange.Net.Trackers.Trades
{