mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-08-31 20:51:25 +00:00
Compare commits
6 Commits
1e45c73f1d
...
dab9a21608
Author | SHA1 | Date | |
---|---|---|---|
|
dab9a21608 | ||
|
a89c222399 | ||
|
1e356d2a45 | ||
|
eed794c2cf | ||
|
2f82e2015b | ||
|
ad599badb2 |
@ -6,9 +6,9 @@
|
|||||||
<PackageId>CryptoExchange.Net.Protobuf</PackageId>
|
<PackageId>CryptoExchange.Net.Protobuf</PackageId>
|
||||||
<Authors>JKorf</Authors>
|
<Authors>JKorf</Authors>
|
||||||
<Description>Protobuf support for CryptoExchange.Net</Description>
|
<Description>Protobuf support for CryptoExchange.Net</Description>
|
||||||
<PackageVersion>9.3.0</PackageVersion>
|
<PackageVersion>9.4.0</PackageVersion>
|
||||||
<AssemblyVersion>9.3.0</AssemblyVersion>
|
<AssemblyVersion>9.4.0</AssemblyVersion>
|
||||||
<FileVersion>9.3.0</FileVersion>
|
<FileVersion>9.4.0</FileVersion>
|
||||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||||
<PackageTags>CryptoExchange;CryptoExchange.Net</PackageTags>
|
<PackageTags>CryptoExchange;CryptoExchange.Net</PackageTags>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
@ -41,7 +41,7 @@
|
|||||||
<DocumentationFile>CryptoExchange.Net.Protobuf.xml</DocumentationFile>
|
<DocumentationFile>CryptoExchange.Net.Protobuf.xml</DocumentationFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CryptoExchange.Net" Version="9.3.0" />
|
<PackageReference Include="CryptoExchange.Net" Version="9.4.0" />
|
||||||
<PackageReference Include="protobuf-net" Version="3.2.52" />
|
<PackageReference Include="protobuf-net" Version="3.2.56" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -5,6 +5,10 @@
|
|||||||
Protobuf support for CryptoExchange.Net.
|
Protobuf support for CryptoExchange.Net.
|
||||||
|
|
||||||
## Release notes
|
## Release notes
|
||||||
|
* Version 9.4.0 - 04 Aug 2025
|
||||||
|
* Updated CryptoExchange.Net to version 9.4.0, see https://github.com/JKorf/CryptoExchange.Net/releases/
|
||||||
|
* Updated protobuf-net package version to 3.2.56
|
||||||
|
|
||||||
* Version 9.3.0 - 23 Jul 2025
|
* Version 9.3.0 - 23 Jul 2025
|
||||||
* Updated CryptoExchange.Net to version 9.3.0, see https://github.com/JKorf/CryptoExchange.Net/releases/
|
* Updated CryptoExchange.Net to version 9.3.0, see https://github.com/JKorf/CryptoExchange.Net/releases/
|
||||||
|
|
||||||
|
@ -6,11 +6,11 @@
|
|||||||
<PackageId>CryptoExchange.Net</PackageId>
|
<PackageId>CryptoExchange.Net</PackageId>
|
||||||
<Authors>JKorf</Authors>
|
<Authors>JKorf</Authors>
|
||||||
<Description>CryptoExchange.Net is a base library which is used to implement different cryptocurrency (exchange) API's. It provides a standardized way of implementing different API's, which results in a very similar experience for users of the API implementations.</Description>
|
<Description>CryptoExchange.Net is a base library which is used to implement different cryptocurrency (exchange) API's. It provides a standardized way of implementing different API's, which results in a very similar experience for users of the API implementations.</Description>
|
||||||
<PackageVersion>9.3.1</PackageVersion>
|
<PackageVersion>9.4.0</PackageVersion>
|
||||||
<AssemblyVersion>9.3.1</AssemblyVersion>
|
<AssemblyVersion>9.4.0</AssemblyVersion>
|
||||||
<FileVersion>9.3.1</FileVersion>
|
<FileVersion>9.4.0</FileVersion>
|
||||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||||
<PackageTags>OKX;OKX.Net;Mexc;Mexc.Net;Kucoin;Kucoin.Net;Kraken;Kraken.Net;Huobi;Huobi.Net;CoinEx;CoinEx.Net;Bybit;Bybit.Net;Bitget;Bitget.Net;Bitfinex;Bitfinex.Net;Binance;Binance.Net;CryptoCurrency;CryptoCurrency Exchange</PackageTags>
|
<PackageTags>OKX;OKX.Net;Mexc;Mexc.Net;Kucoin;Kucoin.Net;Kraken;Kraken.Net;Huobi;Huobi.Net;CoinEx;CoinEx.Net;Bybit;Bybit.Net;Bitget;Bitget.Net;Bitfinex;Bitfinex.Net;Binance;Binance.Net;CryptoCurrency;CryptoCurrency Exchange;CryptoExchange.Net</PackageTags>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
<RepositoryUrl>https://github.com/JKorf/CryptoExchange.Net.git</RepositoryUrl>
|
<RepositoryUrl>https://github.com/JKorf/CryptoExchange.Net.git</RepositoryUrl>
|
||||||
<PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl>
|
||||||
|
@ -23,14 +23,14 @@ namespace CryptoExchange.Net
|
|||||||
{
|
{
|
||||||
if(!_symbolInfos.TryGetValue(topicId, out var exchangeInfo))
|
if(!_symbolInfos.TryGetValue(topicId, out var exchangeInfo))
|
||||||
{
|
{
|
||||||
exchangeInfo = new ExchangeInfo(DateTime.UtcNow, updateData.ToDictionary(x => x.Name, x => new SharedSymbol(x.TradingMode, x.BaseAsset.ToUpperInvariant(), x.QuoteAsset.ToUpperInvariant(), (x as SharedFuturesSymbol)?.DeliveryTime) { SymbolName = x.Name }));
|
exchangeInfo = new ExchangeInfo(DateTime.UtcNow, updateData.ToDictionary(x => x.Name, x => x.SharedSymbol));
|
||||||
_symbolInfos.TryAdd(topicId, exchangeInfo);
|
_symbolInfos.TryAdd(topicId, exchangeInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DateTime.UtcNow - exchangeInfo.UpdateTime < TimeSpan.FromMinutes(60))
|
if (DateTime.UtcNow - exchangeInfo.UpdateTime < TimeSpan.FromMinutes(60))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_symbolInfos[topicId] = new ExchangeInfo(DateTime.UtcNow, updateData.ToDictionary(x => x.Name, x => new SharedSymbol(x.TradingMode, x.BaseAsset.ToUpperInvariant(), x.QuoteAsset.ToUpperInvariant(), (x as SharedFuturesSymbol)?.DeliveryTime) { SymbolName = x.Name }));
|
_symbolInfos[topicId] = new ExchangeInfo(DateTime.UtcNow, updateData.ToDictionary(x => x.Name, x => x.SharedSymbol));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -498,8 +498,8 @@ namespace CryptoExchange.Net
|
|||||||
services.AddTransient(x => (IBookTickerSocketClient)client(x)!);
|
services.AddTransient(x => (IBookTickerSocketClient)client(x)!);
|
||||||
if (typeof(IKlineSocketClient).IsAssignableFrom(typeof(T)))
|
if (typeof(IKlineSocketClient).IsAssignableFrom(typeof(T)))
|
||||||
services.AddTransient(x => (IKlineSocketClient)client(x)!);
|
services.AddTransient(x => (IKlineSocketClient)client(x)!);
|
||||||
if (typeof(IOrderBookRestClient).IsAssignableFrom(typeof(T)))
|
if (typeof(IOrderBookSocketClient).IsAssignableFrom(typeof(T)))
|
||||||
services.AddTransient(x => (IOrderBookRestClient)client(x)!);
|
services.AddTransient(x => (IOrderBookSocketClient)client(x)!);
|
||||||
if (typeof(ITickerSocketClient).IsAssignableFrom(typeof(T)))
|
if (typeof(ITickerSocketClient).IsAssignableFrom(typeof(T)))
|
||||||
services.AddTransient(x => (ITickerSocketClient)client(x)!);
|
services.AddTransient(x => (ITickerSocketClient)client(x)!);
|
||||||
if (typeof(ITickersSocketClient).IsAssignableFrom(typeof(T)))
|
if (typeof(ITickersSocketClient).IsAssignableFrom(typeof(T)))
|
||||||
|
@ -109,6 +109,15 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public List<ParameterDescription> RequiredOptionalParameters { get; set; } = new List<ParameterDescription>();
|
public List<ParameterDescription> RequiredOptionalParameters { get; set; } = new List<ParameterDescription>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether this accepts multiple symbols (Only applicable to request requiring symbol parameters)
|
||||||
|
/// </summary>
|
||||||
|
public bool SupportsMultipleSymbols { get; set; } = false;
|
||||||
|
/// <summary>
|
||||||
|
/// The max number of symbols which can be passed in a call (Only applicable to request requiring symbol parameters)
|
||||||
|
/// </summary>
|
||||||
|
public int? MaxSymbolCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ctor
|
/// ctor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -141,6 +150,19 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (request is SharedSymbolRequest symbolsRequest)
|
||||||
|
{
|
||||||
|
if (symbolsRequest.Symbols != null)
|
||||||
|
{
|
||||||
|
if (!SupportsMultipleSymbols)
|
||||||
|
return new ArgumentError($"Only a single symbol parameter is allowed, multiple symbols are not supported");
|
||||||
|
|
||||||
|
if (symbolsRequest.Symbols.Length > MaxSymbolCount)
|
||||||
|
return new ArgumentError($"Max number of symbols is {MaxSymbolCount} but {symbolsRequest.Symbols.Length} were passed");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return ValidateRequest(exchange, request.ExchangeParameters, tradingMode, supportedTradingModes);
|
return ValidateRequest(exchange, request.ExchangeParameters, tradingMode, supportedTradingModes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,14 +1,27 @@
|
|||||||
namespace CryptoExchange.Net.SharedApis
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Symbol request
|
/// Symbol request
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public record SharedSymbolRequest : SharedRequest
|
public record SharedSymbolRequest : SharedRequest
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Trading mode
|
||||||
|
/// </summary>
|
||||||
|
public TradingMode TradingMode { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The symbol
|
/// The symbol
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public SharedSymbol Symbol { get; set; }
|
public SharedSymbol? Symbol { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Symbols
|
||||||
|
/// </summary>
|
||||||
|
public SharedSymbol[]? Symbols { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ctor
|
/// ctor
|
||||||
@ -16,6 +29,22 @@
|
|||||||
public SharedSymbolRequest(SharedSymbol symbol, ExchangeParameters? exchangeParameters = null) : base(exchangeParameters)
|
public SharedSymbolRequest(SharedSymbol symbol, ExchangeParameters? exchangeParameters = null) : base(exchangeParameters)
|
||||||
{
|
{
|
||||||
Symbol = symbol;
|
Symbol = symbol;
|
||||||
|
TradingMode = symbol.TradingMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
public SharedSymbolRequest(IEnumerable<SharedSymbol> symbols, ExchangeParameters? exchangeParameters = null) : base(exchangeParameters)
|
||||||
|
{
|
||||||
|
if (!symbols.Any())
|
||||||
|
throw new ArgumentException("Empty symbol list");
|
||||||
|
|
||||||
|
if (symbols.GroupBy(x => x.TradingMode).Count() > 1)
|
||||||
|
throw new ArgumentException("All symbols in the symbol list should have the same trading mode");
|
||||||
|
|
||||||
|
Symbols = symbols.ToArray();
|
||||||
|
TradingMode = Symbols.First().TradingMode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
namespace CryptoExchange.Net.SharedApis
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Request to subscribe to book ticker updates
|
/// Request to subscribe to book ticker updates
|
||||||
@ -13,5 +15,22 @@
|
|||||||
public SubscribeBookTickerRequest(SharedSymbol symbol, ExchangeParameters? exchangeParameters = null) : base(symbol, exchangeParameters)
|
public SubscribeBookTickerRequest(SharedSymbol symbol, ExchangeParameters? exchangeParameters = null) : base(symbol, exchangeParameters)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="symbols">The symbols to subscribe to</param>
|
||||||
|
/// <param name="exchangeParameters">Exchange specific parameters</param>
|
||||||
|
public SubscribeBookTickerRequest(IEnumerable<SharedSymbol> symbols, ExchangeParameters? exchangeParameters = null) : base(symbols, exchangeParameters)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="symbols">The symbols to subscribe to</param>
|
||||||
|
public SubscribeBookTickerRequest(params SharedSymbol[] symbols) : base(symbols, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
namespace CryptoExchange.Net.SharedApis
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Request to subscribe to kline/candlestick updates
|
/// Request to subscribe to kline/candlestick updates
|
||||||
@ -20,5 +22,26 @@
|
|||||||
{
|
{
|
||||||
Interval = interval;
|
Interval = interval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="symbols">The symbols to subscribe to</param>
|
||||||
|
/// <param name="interval">Kline interval</param>
|
||||||
|
/// <param name="exchangeParameters">Exchange specific parameters</param>
|
||||||
|
public SubscribeKlineRequest(IEnumerable<SharedSymbol> symbols, SharedKlineInterval interval, ExchangeParameters? exchangeParameters = null) : base(symbols, exchangeParameters)
|
||||||
|
{
|
||||||
|
Interval = interval;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="interval">Kline interval</param>
|
||||||
|
/// <param name="symbols">The symbols to subscribe to</param>
|
||||||
|
public SubscribeKlineRequest(SharedKlineInterval interval, params SharedSymbol[] symbols) : base(symbols, null)
|
||||||
|
{
|
||||||
|
Interval = interval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
namespace CryptoExchange.Net.SharedApis
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Request to subscribe to order book snapshot updates
|
/// Request to subscribe to order book snapshot updates
|
||||||
@ -20,5 +22,22 @@
|
|||||||
{
|
{
|
||||||
Limit = limit;
|
Limit = limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="symbols">The symbols to subscribe to</param>
|
||||||
|
/// <param name="exchangeParameters">Exchange specific parameters</param>
|
||||||
|
public SubscribeOrderBookRequest(IEnumerable<SharedSymbol> symbols, ExchangeParameters? exchangeParameters = null) : base(symbols, exchangeParameters)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="symbols">The symbols to subscribe to</param>
|
||||||
|
public SubscribeOrderBookRequest(params SharedSymbol[] symbols) : base(symbols, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
namespace CryptoExchange.Net.SharedApis
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Request to subscribe to ticker updates
|
/// Request to subscribe to ticker updates
|
||||||
@ -13,5 +16,22 @@
|
|||||||
public SubscribeTickerRequest(SharedSymbol symbol, ExchangeParameters? exchangeParameters = null) : base(symbol, exchangeParameters)
|
public SubscribeTickerRequest(SharedSymbol symbol, ExchangeParameters? exchangeParameters = null) : base(symbol, exchangeParameters)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="symbols">The symbols to subscribe to</param>
|
||||||
|
/// <param name="exchangeParameters">Exchange specific parameters</param>
|
||||||
|
public SubscribeTickerRequest(IEnumerable<SharedSymbol> symbols, ExchangeParameters? exchangeParameters = null) : base(symbols, exchangeParameters)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="symbols">The symbols to subscribe to</param>
|
||||||
|
public SubscribeTickerRequest(params SharedSymbol[] symbols) : base(symbols, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
namespace CryptoExchange.Net.SharedApis
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Request to subscribe to trade updates
|
/// Request to subscribe to trade updates
|
||||||
@ -13,5 +15,22 @@
|
|||||||
public SubscribeTradeRequest(SharedSymbol symbol, ExchangeParameters? exchangeParameters = null) : base(symbol, exchangeParameters)
|
public SubscribeTradeRequest(SharedSymbol symbol, ExchangeParameters? exchangeParameters = null) : base(symbol, exchangeParameters)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="symbols">The symbols to subscribe to</param>
|
||||||
|
/// <param name="exchangeParameters">Exchange specific parameters</param>
|
||||||
|
public SubscribeTradeRequest(IEnumerable<SharedSymbol> symbols, ExchangeParameters? exchangeParameters = null) : base(symbols, exchangeParameters)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="symbols">The symbols to subscribe to</param>
|
||||||
|
public SubscribeTradeRequest(params SharedSymbol[] symbols) : base(symbols, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,5 +30,8 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
public SharedFuturesSymbol(TradingMode symbolType, string baseAsset, string quoteAsset, string symbol, bool trading) : base(baseAsset, quoteAsset, symbol, trading, symbolType)
|
public SharedFuturesSymbol(TradingMode symbolType, string baseAsset, string quoteAsset, string symbol, bool trading) : base(baseAsset, quoteAsset, symbol, trading, symbolType)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override SharedSymbol SharedSymbol => new SharedSymbol(TradingMode, BaseAsset.ToUpperInvariant(), QuoteAsset.ToUpperInvariant(), DeliveryTime) { SymbolName = Name };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,5 +69,11 @@
|
|||||||
Name = symbol;
|
Name = symbol;
|
||||||
Trading = trading;
|
Trading = trading;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The SharedSymbol of this symbol
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public virtual SharedSymbol SharedSymbol => new SharedSymbol(TradingMode, BaseAsset.ToUpperInvariant(), QuoteAsset.ToUpperInvariant()) { SymbolName = Name };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -864,7 +864,7 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
{
|
{
|
||||||
if (ApiClient.MessageSendSizeLimit != null && data.Length > ApiClient.MessageSendSizeLimit.Value)
|
if (ApiClient.MessageSendSizeLimit != null && data.Length > ApiClient.MessageSendSizeLimit.Value)
|
||||||
{
|
{
|
||||||
var info = $"Message to send exceeds the max server message size ({ApiClient.MessageSendSizeLimit.Value} bytes). Split the request into batches to keep below this limit";
|
var info = $"Message to send exceeds the max server message size ({data.Length} vs {ApiClient.MessageSendSizeLimit.Value} bytes). Split the request into batches to keep below this limit";
|
||||||
_logger.LogWarning("[Sckt {SocketId}] [Req {RequestId}] {Info}", SocketId, requestId, info);
|
_logger.LogWarning("[Sckt {SocketId}] [Req {RequestId}] {Info}", SocketId, requestId, info);
|
||||||
return new CallResult(new InvalidOperationError(info));
|
return new CallResult(new InvalidOperationError(info));
|
||||||
}
|
}
|
||||||
@ -899,7 +899,7 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
{
|
{
|
||||||
if (ApiClient.MessageSendSizeLimit != null && data.Length > ApiClient.MessageSendSizeLimit.Value)
|
if (ApiClient.MessageSendSizeLimit != null && data.Length > ApiClient.MessageSendSizeLimit.Value)
|
||||||
{
|
{
|
||||||
var info = $"Message to send exceeds the max server message size ({ApiClient.MessageSendSizeLimit.Value} bytes). Split the request into batches to keep below this limit";
|
var info = $"Message to send exceeds the max server message size ({data.Length} vs {ApiClient.MessageSendSizeLimit.Value} bytes). Split the request into batches to keep below this limit";
|
||||||
_logger.LogWarning("[Sckt {SocketId}] [Req {RequestId}] {Info}", SocketId, requestId, info);
|
_logger.LogWarning("[Sckt {SocketId}] [Req {RequestId}] {Info}", SocketId, requestId, info);
|
||||||
return new CallResult(new InvalidOperationError(info));
|
return new CallResult(new InvalidOperationError(info));
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,9 @@ Make a one time donation in a crypto currency of your choice. If you prefer to d
|
|||||||
Alternatively, sponsor me on Github using [Github Sponsors](https://github.com/sponsors/JKorf).
|
Alternatively, sponsor me on Github using [Github Sponsors](https://github.com/sponsors/JKorf).
|
||||||
|
|
||||||
## Release notes
|
## Release notes
|
||||||
|
* Version 9.4.0 - 04 Aug 2025
|
||||||
|
* Updated Shared symbol requests/subscriptions to allow multiple symbols in one call if supported
|
||||||
|
|
||||||
* Version 9.3.1 - 29 Jul 2025
|
* Version 9.3.1 - 29 Jul 2025
|
||||||
* Added BaseAndQuoteAssetAndContracts value to SharedQuantityType enum
|
* Added BaseAndQuoteAssetAndContracts value to SharedQuantityType enum
|
||||||
* Added Id property to SharedPosition model
|
* Added Id property to SharedPosition model
|
||||||
|
Loading…
x
Reference in New Issue
Block a user