diff --git a/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs index 1954616..f99de56 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/CommaSplitEnumConverter.cs @@ -10,16 +10,16 @@ namespace CryptoExchange.Net.Converters.SystemTextJson /// /// Converter for comma separated enum values /// - public class CommaSplitEnumConverter : JsonConverter> where T: struct, Enum + public class CommaSplitEnumConverter : JsonConverter where T: struct, Enum { /// - public override IEnumerable? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + public override T[]? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { return (reader.GetString()?.Split(',').Select(x => (T)EnumConverter.ParseString(x)!).ToArray() ?? []); } /// - public override void Write(Utf8JsonWriter writer, IEnumerable value, JsonSerializerOptions options) + public override void Write(Utf8JsonWriter writer, T[] value, JsonSerializerOptions options) { writer.WriteStringValue(string.Join(",", value.Select(x => EnumConverter.GetString(x)))); } diff --git a/CryptoExchange.Net/ExchangeHelpers.cs b/CryptoExchange.Net/ExchangeHelpers.cs index 95411ff..97f2bac 100644 --- a/CryptoExchange.Net/ExchangeHelpers.cs +++ b/CryptoExchange.Net/ExchangeHelpers.cs @@ -225,10 +225,10 @@ namespace CryptoExchange.Net /// The request parameters /// Cancellation token /// - public static async IAsyncEnumerable>> ExecutePages(Func>>> paginatedFunc, U request, [EnumeratorCancellation]CancellationToken ct = default) + public static async IAsyncEnumerable> ExecutePages(Func>> paginatedFunc, U request, [EnumeratorCancellation]CancellationToken ct = default) { var result = new List(); - ExchangeWebResult> batch; + ExchangeWebResult batch; INextPageToken? nextPageToken = null; while (true) { diff --git a/CryptoExchange.Net/Interfaces/IRequest.cs b/CryptoExchange.Net/Interfaces/IRequest.cs index ad6c591..7f7414a 100644 --- a/CryptoExchange.Net/Interfaces/IRequest.cs +++ b/CryptoExchange.Net/Interfaces/IRequest.cs @@ -54,7 +54,7 @@ namespace CryptoExchange.Net.Interfaces /// Get all headers /// /// - Dictionary> GetHeaders(); + Dictionary GetHeaders(); /// /// Get the response diff --git a/CryptoExchange.Net/Interfaces/IResponse.cs b/CryptoExchange.Net/Interfaces/IResponse.cs index 2d3c487..55f9921 100644 --- a/CryptoExchange.Net/Interfaces/IResponse.cs +++ b/CryptoExchange.Net/Interfaces/IResponse.cs @@ -28,7 +28,7 @@ namespace CryptoExchange.Net.Interfaces /// /// The response headers /// - IEnumerable>> ResponseHeaders { get; } + KeyValuePair[] ResponseHeaders { get; } /// /// Get the response stream diff --git a/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs b/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs index baf9df3..21c2bb7 100644 --- a/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs +++ b/CryptoExchange.Net/Interfaces/ISymbolOrderBook.cs @@ -42,7 +42,7 @@ namespace CryptoExchange.Net.Interfaces /// /// Event when order book was updated. Be careful! It can generate a lot of events at high-liquidity markets /// - event Action<(IEnumerable Bids, IEnumerable Asks)> OnOrderBookUpdate; + event Action<(ISymbolOrderBookEntry[] Bids, ISymbolOrderBookEntry[] Asks)> OnOrderBookUpdate; /// /// Event when the BestBid or BestAsk changes ie a Pricing Tick /// @@ -64,17 +64,17 @@ namespace CryptoExchange.Net.Interfaces /// /// Get a snapshot of the book at this moment /// - (IEnumerable bids, IEnumerable asks) Book { get; } + (ISymbolOrderBookEntry[] bids, ISymbolOrderBookEntry[] asks) Book { get; } /// /// The list of asks /// - IEnumerable Asks { get; } + ISymbolOrderBookEntry[] Asks { get; } /// /// The list of bids /// - IEnumerable Bids { get; } + ISymbolOrderBookEntry[] Bids { get; } /// /// The best bid currently in the order book diff --git a/CryptoExchange.Net/Objects/CallResult.cs b/CryptoExchange.Net/Objects/CallResult.cs index 6dbded1..30703b1 100644 --- a/CryptoExchange.Net/Objects/CallResult.cs +++ b/CryptoExchange.Net/Objects/CallResult.cs @@ -192,7 +192,7 @@ namespace CryptoExchange.Net.Objects /// /// The headers sent with the request /// - public IEnumerable>>? RequestHeaders { get; set; } + public KeyValuePair[]? RequestHeaders { get; set; } /// /// The request id @@ -217,7 +217,7 @@ namespace CryptoExchange.Net.Objects /// /// The response headers /// - public IEnumerable>>? ResponseHeaders { get; set; } + public KeyValuePair[]? ResponseHeaders { get; set; } /// /// The time between sending the request and receiving the response @@ -238,13 +238,13 @@ namespace CryptoExchange.Net.Objects /// public WebCallResult( HttpStatusCode? code, - IEnumerable>>? responseHeaders, + KeyValuePair[]? responseHeaders, TimeSpan? responseTime, int? requestId, string? requestUrl, string? requestBody, HttpMethod? requestMethod, - IEnumerable>>? requestHeaders, + KeyValuePair[]? requestHeaders, Error? error) : base(error) { ResponseStatusCode = code; @@ -343,7 +343,7 @@ namespace CryptoExchange.Net.Objects /// /// The headers sent with the request /// - public IEnumerable>>? RequestHeaders { get; set; } + public KeyValuePair[]? RequestHeaders { get; set; } /// /// The request id @@ -373,7 +373,7 @@ namespace CryptoExchange.Net.Objects /// /// The response headers /// - public IEnumerable>>? ResponseHeaders { get; set; } + public KeyValuePair[]? ResponseHeaders { get; set; } /// /// The time between sending the request and receiving the response @@ -403,7 +403,7 @@ namespace CryptoExchange.Net.Objects /// public WebCallResult( HttpStatusCode? code, - IEnumerable>>? responseHeaders, + KeyValuePair[]? responseHeaders, TimeSpan? responseTime, long? responseLength, string? originalData, @@ -411,7 +411,7 @@ namespace CryptoExchange.Net.Objects string? requestUrl, string? requestBody, HttpMethod? requestMethod, - IEnumerable>>? requestHeaders, + KeyValuePair[]? requestHeaders, ResultDataSource dataSource, [AllowNull] T data, Error? error) : base(data, originalData, error) diff --git a/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs b/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs index e457994..5a71974 100644 --- a/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs +++ b/CryptoExchange.Net/OrderBook/ProcessBufferEntry.cs @@ -22,11 +22,11 @@ namespace CryptoExchange.Net.OrderBook /// /// List of changed/new asks /// - public IEnumerable Asks { get; set; } = Array.Empty(); + public ISymbolOrderBookEntry[] Asks { get; set; } = Array.Empty(); /// /// List of changed/new bids /// - public IEnumerable Bids { get; set; } = Array.Empty(); + public ISymbolOrderBookEntry[] Bids { get; set; } = Array.Empty(); } } diff --git a/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs b/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs index 2ddc46e..f23110c 100644 --- a/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs +++ b/CryptoExchange.Net/OrderBook/ProcessQueueItem.cs @@ -8,16 +8,16 @@ namespace CryptoExchange.Net.OrderBook { public long StartUpdateId { get; set; } public long EndUpdateId { get; set; } - public IEnumerable Bids { get; set; } = Array.Empty(); - public IEnumerable Asks { get; set; } = Array.Empty(); + public ISymbolOrderBookEntry[] Bids { get; set; } = Array.Empty(); + public ISymbolOrderBookEntry[] Asks { get; set; } = Array.Empty(); } internal class InitialOrderBookItem { public long StartUpdateId { get; set; } public long EndUpdateId { get; set; } - public IEnumerable Bids { get; set; } = Array.Empty(); - public IEnumerable Asks { get; set; } = Array.Empty(); + public ISymbolOrderBookEntry[] Bids { get; set; } = Array.Empty(); + public ISymbolOrderBookEntry[] Asks { get; set; } = Array.Empty(); } internal class ChecksumItem diff --git a/CryptoExchange.Net/OrderBook/SymbolOrderBook.cs b/CryptoExchange.Net/OrderBook/SymbolOrderBook.cs index 124de93..d6ee7b4 100644 --- a/CryptoExchange.Net/OrderBook/SymbolOrderBook.cs +++ b/CryptoExchange.Net/OrderBook/SymbolOrderBook.cs @@ -123,7 +123,7 @@ namespace CryptoExchange.Net.OrderBook public event Action<(ISymbolOrderBookEntry BestBid, ISymbolOrderBookEntry BestAsk)>? OnBestOffersChanged; /// - public event Action<(IEnumerable Bids, IEnumerable Asks)>? OnOrderBookUpdate; + public event Action<(ISymbolOrderBookEntry[] Bids, ISymbolOrderBookEntry[] Asks)>? OnOrderBookUpdate; /// public DateTime UpdateTime { get; private set; } @@ -135,27 +135,27 @@ namespace CryptoExchange.Net.OrderBook public int BidCount { get; private set; } /// - public IEnumerable Asks + public ISymbolOrderBookEntry[] Asks { get { lock (_bookLock) - return _asks.Select(a => a.Value).ToList(); + return _asks.Select(a => a.Value).ToArray(); } } /// - public IEnumerable Bids + public ISymbolOrderBookEntry[] Bids { get { lock (_bookLock) - return _bids.Select(a => a.Value).ToList(); + return _bids.Select(a => a.Value).ToArray(); } } /// - public (IEnumerable bids, IEnumerable asks) Book + public (ISymbolOrderBookEntry[] bids, ISymbolOrderBookEntry[] asks) Book { get { @@ -412,7 +412,7 @@ namespace CryptoExchange.Net.OrderBook /// The last update sequence number until which the snapshot is in sync /// List of asks /// List of bids - protected void SetInitialOrderBook(long orderBookSequenceNumber, IEnumerable bidList, IEnumerable askList) + protected void SetInitialOrderBook(long orderBookSequenceNumber, ISymbolOrderBookEntry[] bidList, ISymbolOrderBookEntry[] askList) { _processQueue.Enqueue(new InitialOrderBookItem { StartUpdateId = orderBookSequenceNumber, EndUpdateId = orderBookSequenceNumber, Asks = askList, Bids = bidList }); _queueEvent.Set(); @@ -424,7 +424,7 @@ namespace CryptoExchange.Net.OrderBook /// The sequence number /// List of updated/new bids /// List of updated/new asks - protected void UpdateOrderBook(long updateId, IEnumerable bids, IEnumerable asks) + protected void UpdateOrderBook(long updateId, ISymbolOrderBookEntry[] bids, ISymbolOrderBookEntry[] asks) { _processQueue.Enqueue(new ProcessQueueItem { StartUpdateId = updateId, EndUpdateId = updateId, Asks = asks, Bids = bids }); _queueEvent.Set(); @@ -437,7 +437,7 @@ namespace CryptoExchange.Net.OrderBook /// The sequence number of the last update /// List of updated/new bids /// List of updated/new asks - protected void UpdateOrderBook(long firstUpdateId, long lastUpdateId, IEnumerable bids, IEnumerable asks) + protected void UpdateOrderBook(long firstUpdateId, long lastUpdateId, ISymbolOrderBookEntry[] bids, ISymbolOrderBookEntry[] asks) { _processQueue.Enqueue(new ProcessQueueItem { StartUpdateId = firstUpdateId, EndUpdateId = lastUpdateId, Asks = asks, Bids = bids }); _queueEvent.Set(); @@ -448,7 +448,7 @@ namespace CryptoExchange.Net.OrderBook /// /// List of updated/new bids /// List of updated/new asks - protected void UpdateOrderBook(IEnumerable bids, IEnumerable asks) + protected void UpdateOrderBook(ISymbolOrderSequencedBookEntry[] bids, ISymbolOrderSequencedBookEntry[] asks) { var highest = Math.Max(bids.Any() ? bids.Max(b => b.Sequence) : 0, asks.Any() ? asks.Max(a => a.Sequence) : 0); var lowest = Math.Min(bids.Any() ? bids.Min(b => b.Sequence) : long.MaxValue, asks.Any() ? asks.Min(a => a.Sequence) : long.MaxValue); @@ -707,7 +707,7 @@ namespace CryptoExchange.Net.OrderBook UpdateTime = DateTime.UtcNow; _logger.OrderBookDataSet(Api, Symbol, BidCount, AskCount, item.EndUpdateId); CheckProcessBuffer(); - OnOrderBookUpdate?.Invoke((item.Bids, item.Asks)); + OnOrderBookUpdate?.Invoke((item.Bids.ToArray(), item.Asks.ToArray())); OnBestOffersChanged?.Invoke((BestBid, BestAsk)); } } @@ -745,7 +745,7 @@ namespace CryptoExchange.Net.OrderBook return; } - OnOrderBookUpdate?.Invoke((item.Bids, item.Asks)); + OnOrderBookUpdate?.Invoke((item.Bids.ToArray(), item.Asks.ToArray())); CheckBestOffersChanged(prevBestBid, prevBestAsk); } } diff --git a/CryptoExchange.Net/Requests/Request.cs b/CryptoExchange.Net/Requests/Request.cs index f73b0fc..47428e6 100644 --- a/CryptoExchange.Net/Requests/Request.cs +++ b/CryptoExchange.Net/Requests/Request.cs @@ -67,9 +67,9 @@ namespace CryptoExchange.Net.Requests } /// - public Dictionary> GetHeaders() + public Dictionary GetHeaders() { - return _request.Headers.ToDictionary(h => h.Key, h => h.Value); + return _request.Headers.ToDictionary(h => h.Key, h => h.Value.ToArray()); } /// diff --git a/CryptoExchange.Net/Requests/Response.cs b/CryptoExchange.Net/Requests/Response.cs index 55f74ad..78505b1 100644 --- a/CryptoExchange.Net/Requests/Response.cs +++ b/CryptoExchange.Net/Requests/Response.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.IO; +using System.Linq; using System.Net; using System.Net.Http; using System.Threading.Tasks; @@ -24,7 +25,7 @@ namespace CryptoExchange.Net.Requests public long? ContentLength => _response.Content.Headers.ContentLength; /// - public IEnumerable>> ResponseHeaders => _response.Headers; + public KeyValuePair[] ResponseHeaders => _response.Headers.Select(x => new KeyValuePair(x.Key, x.Value.ToArray())).ToArray(); /// /// Create response for a http response message diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs index e502164..0553db7 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFundingRateRestClient.cs @@ -19,6 +19,6 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// The pagination token from the previous request to continue pagination /// Cancellation token - Task>> GetFundingRateHistoryAsync(GetFundingRateHistoryRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetFundingRateHistoryAsync(GetFundingRateHistoryRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs index 7142432..cb84dde 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesOrderRestClient.cs @@ -62,7 +62,7 @@ namespace CryptoExchange.Net.SharedApis /// /// Request info /// Cancellation token - Task>> GetOpenFuturesOrdersAsync(GetOpenOrdersRequest request, CancellationToken ct = default); + Task> GetOpenFuturesOrdersAsync(GetOpenOrdersRequest request, CancellationToken ct = default); /// /// Spot get closed orders request options @@ -74,7 +74,7 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// The pagination token from the previous request to continue pagination /// Cancellation token - Task>> GetClosedFuturesOrdersAsync(GetClosedOrdersRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetClosedFuturesOrdersAsync(GetClosedOrdersRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); /// /// Futures get order trades request options @@ -85,7 +85,7 @@ namespace CryptoExchange.Net.SharedApis /// /// Request info /// Cancellation token - Task>> GetFuturesOrderTradesAsync(GetOrderTradesRequest request, CancellationToken ct = default); + Task> GetFuturesOrderTradesAsync(GetOrderTradesRequest request, CancellationToken ct = default); /// /// Futures user trades request options @@ -97,7 +97,7 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// The pagination token from the previous request to continue pagination /// Cancellation token - Task>> GetFuturesUserTradesAsync(GetUserTradesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetFuturesUserTradesAsync(GetUserTradesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); /// /// Futures cancel order request options @@ -119,7 +119,7 @@ namespace CryptoExchange.Net.SharedApis /// /// Request info /// Cancellation token - Task>> GetPositionsAsync(GetPositionsRequest request, CancellationToken ct = default); + Task> GetPositionsAsync(GetPositionsRequest request, CancellationToken ct = default); /// /// Close position order request options diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs index 1a3bb17..672ef51 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesSymbolRestClient.cs @@ -14,10 +14,10 @@ namespace CryptoExchange.Net.SharedApis /// EndpointOptions GetFuturesSymbolsOptions { get; } /// - /// Get info on all futures symbols supported on the exchagne + /// Get info on all futures symbols supported on the exchange /// /// Request info /// Cancellation token - Task>> GetFuturesSymbolsAsync(GetSymbolsRequest request, CancellationToken ct = default); + Task> GetFuturesSymbolsAsync(GetSymbolsRequest request, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs index c08ca0a..b11c01c 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IFuturesTickerRestClient.cs @@ -25,10 +25,10 @@ namespace CryptoExchange.Net.SharedApis /// EndpointOptions GetFuturesTickersOptions { get; } /// - /// Get ticker info for aall futures symbols + /// Get ticker info for all futures symbols /// /// Request info /// Cancellation token - Task>> GetFuturesTickersAsync(GetTickersRequest request, CancellationToken ct = default); + Task> GetFuturesTickersAsync(GetTickersRequest request, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs index b77c3b0..103055d 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IIndexPriceKlineRestClient.cs @@ -19,6 +19,6 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// The pagination token from the previous request to continue pagination /// Cancellation token - Task>> GetIndexPriceKlinesAsync(GetKlinesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetIndexPriceKlinesAsync(GetKlinesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs index dca1414..69f2f5c 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IMarkPriceKlineRestClient.cs @@ -19,6 +19,6 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// The pagination token from the previous request to continue pagination /// Cancellation token - Task>> GetMarkPriceKlinesAsync(GetKlinesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetMarkPriceKlinesAsync(GetKlinesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs index 31135c4..8097fff 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Futures/IPositionHistoryRestClient.cs @@ -19,6 +19,6 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// The pagination token from the previous request to continue pagination /// Cancellation token - Task>> GetPositionHistoryAsync(GetPositionHistoryRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetPositionHistoryAsync(GetPositionHistoryRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs index ca0e1b4..a688386 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IAssetsRestClient.cs @@ -31,6 +31,6 @@ namespace CryptoExchange.Net.SharedApis /// /// Request info /// Cancellation token - Task>> GetAssetsAsync(GetAssetsRequest request, CancellationToken ct = default); + Task> GetAssetsAsync(GetAssetsRequest request, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs index 1220053..8983c61 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IBalanceRestClient.cs @@ -20,6 +20,6 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// Cancellation token /// - Task>> GetBalancesAsync(GetBalancesRequest request, CancellationToken ct = default); + Task> GetBalancesAsync(GetBalancesRequest request, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs index 261c275..0229d4a 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IDepositRestClient.cs @@ -20,7 +20,7 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// Cancellation token /// - Task>> GetDepositAddressesAsync(GetDepositAddressesRequest request, CancellationToken ct = default); + Task> GetDepositAddressesAsync(GetDepositAddressesRequest request, CancellationToken ct = default); /// /// Deposits request options @@ -34,6 +34,6 @@ namespace CryptoExchange.Net.SharedApis /// The pagination token from the previous request to continue pagination /// Cancellation token /// - Task>> GetDepositsAsync(GetDepositsRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetDepositsAsync(GetDepositsRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs index 39cfb30..06cee87 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IKlineRestClient.cs @@ -21,6 +21,6 @@ namespace CryptoExchange.Net.SharedApis /// The pagination token from the previous request to continue pagination /// Cancellation token /// - Task>> GetKlinesAsync(GetKlinesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetKlinesAsync(GetKlinesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs index f89afdb..714b7d5 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IRecentTradeRestClient.cs @@ -20,6 +20,6 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// Cancellation token /// - Task>> GetRecentTradesAsync(GetRecentTradesRequest request, CancellationToken ct = default); + Task> GetRecentTradesAsync(GetRecentTradesRequest request, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs index a99e723..e14c64d 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/ITradeHistoryRestClient.cs @@ -21,6 +21,6 @@ namespace CryptoExchange.Net.SharedApis /// The pagination token from the previous request to continue pagination /// Cancellation token /// - Task>> GetTradeHistoryAsync(GetTradeHistoryRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetTradeHistoryAsync(GetTradeHistoryRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs index 9e24915..3316888 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/IWithdrawalRestClient .cs @@ -21,6 +21,6 @@ namespace CryptoExchange.Net.SharedApis /// The pagination token from the previous request to continue pagination /// Cancellation token /// - Task>> GetWithdrawalsAsync(GetWithdrawalsRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetWithdrawalsAsync(GetWithdrawalsRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs index fa6dd66..6ca0b7d 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotOrderRestClient.cs @@ -21,11 +21,11 @@ namespace CryptoExchange.Net.SharedApis /// /// Supported order types /// - IEnumerable SpotSupportedOrderTypes { get; } + SharedOrderType[] SpotSupportedOrderTypes { get; } /// /// Supported time in force /// - IEnumerable SpotSupportedTimeInForce { get; } + SharedTimeInForce[] SpotSupportedTimeInForce { get; } /// /// Quantity types support /// @@ -62,7 +62,7 @@ namespace CryptoExchange.Net.SharedApis /// /// Request info /// Cancellation token - Task>> GetOpenSpotOrdersAsync(GetOpenOrdersRequest request, CancellationToken ct = default); + Task> GetOpenSpotOrdersAsync(GetOpenOrdersRequest request, CancellationToken ct = default); /// /// Spot get closed orders request options @@ -74,7 +74,7 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// The pagination token from the previous request to continue pagination /// Cancellation token - Task>> GetClosedSpotOrdersAsync(GetClosedOrdersRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetClosedSpotOrdersAsync(GetClosedOrdersRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); /// /// Spot get order trades request options @@ -85,7 +85,7 @@ namespace CryptoExchange.Net.SharedApis /// /// Request info /// Cancellation token - Task>> GetSpotOrderTradesAsync(GetOrderTradesRequest request, CancellationToken ct = default); + Task> GetSpotOrderTradesAsync(GetOrderTradesRequest request, CancellationToken ct = default); /// /// Spot user trades request options @@ -97,7 +97,7 @@ namespace CryptoExchange.Net.SharedApis /// Request info /// The pagination token from the previous request to continue pagination /// Cancellation token - Task>> GetSpotUserTradesAsync(GetUserTradesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); + Task> GetSpotUserTradesAsync(GetUserTradesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default); /// /// Spot cancel order request options diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs index b982bd0..520f07c 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotSymbolRestClient.cs @@ -19,6 +19,6 @@ namespace CryptoExchange.Net.SharedApis /// /// Request info /// Cancellation token - Task>> GetSpotSymbolsAsync(GetSymbolsRequest request, CancellationToken ct = default); + Task> GetSpotSymbolsAsync(GetSymbolsRequest request, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs index dbb7abc..84a9108 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Rest/Spot/ISpotTickerRestClient.cs @@ -28,6 +28,6 @@ namespace CryptoExchange.Net.SharedApis /// /// Request info /// Cancellation token - Task>> GetSpotTickersAsync(GetTickersRequest request, CancellationToken ct = default); + Task> GetSpotTickersAsync(GetTickersRequest request, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs index 8cfa4eb..db22ab6 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IFuturesOrderSocketClient.cs @@ -23,6 +23,6 @@ namespace CryptoExchange.Net.SharedApis /// Update handler /// Cancellation token, can be used to stop the updates /// - Task> SubscribeToFuturesOrderUpdatesAsync(SubscribeFuturesOrderRequest request, Action>> handler, CancellationToken ct = default); + Task> SubscribeToFuturesOrderUpdatesAsync(SubscribeFuturesOrderRequest request, Action> handler, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs index d657748..03cba56 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Futures/IPositionSocketClient.cs @@ -23,6 +23,6 @@ namespace CryptoExchange.Net.SharedApis /// Update handler /// Cancellation token, can be used to stop the updates /// - Task> SubscribeToPositionUpdatesAsync(SubscribePositionRequest request, Action>> handler, CancellationToken ct = default); + Task> SubscribeToPositionUpdatesAsync(SubscribePositionRequest request, Action> handler, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs index f9df2de..24c66a6 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IBalanceSocketClient.cs @@ -23,6 +23,6 @@ namespace CryptoExchange.Net.SharedApis /// Update handler /// Cancellation token, can be used to stop the updates /// - Task> SubscribeToBalanceUpdatesAsync(SubscribeBalancesRequest request, Action>> handler, CancellationToken ct = default); + Task> SubscribeToBalanceUpdatesAsync(SubscribeBalancesRequest request, Action> handler, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs index e187f1e..f3652c3 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITickersSocketClient.cs @@ -23,6 +23,6 @@ namespace CryptoExchange.Net.SharedApis /// Update handler /// Cancellation token, can be used to stop the updates /// - Task> SubscribeToAllTickersUpdatesAsync(SubscribeAllTickersRequest request, Action>> handler, CancellationToken ct = default); + Task> SubscribeToAllTickersUpdatesAsync(SubscribeAllTickersRequest request, Action> handler, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs index a46b072..e6a8f21 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/ITradeSocketClient.cs @@ -23,6 +23,6 @@ namespace CryptoExchange.Net.SharedApis /// Update handler /// Cancellation token, can be used to stop the updates /// - Task> SubscribeToTradeUpdatesAsync(SubscribeTradeRequest request, Action>> handler, CancellationToken ct = default); + Task> SubscribeToTradeUpdatesAsync(SubscribeTradeRequest request, Action> handler, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs index 941afed..031e9f8 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/IUserTradeSocketClient.cs @@ -23,6 +23,6 @@ namespace CryptoExchange.Net.SharedApis /// Update handler /// Cancellation token, can be used to stop the updates /// - Task> SubscribeToUserTradeUpdatesAsync(SubscribeUserTradeRequest request, Action>> handler, CancellationToken ct = default); + Task> SubscribeToUserTradeUpdatesAsync(SubscribeUserTradeRequest request, Action> handler, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs index 5852aff..12d24b2 100644 --- a/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs +++ b/CryptoExchange.Net/SharedApis/Interfaces/Socket/Spot/ISpotOrderSocketClient.cs @@ -23,6 +23,6 @@ namespace CryptoExchange.Net.SharedApis /// Update handler /// Cancellation token, can be used to stop the updates /// - Task> SubscribeToSpotOrderUpdatesAsync(SubscribeSpotOrderRequest request, Action>> handler, CancellationToken ct = default); + Task> SubscribeToSpotOrderUpdatesAsync(SubscribeSpotOrderRequest request, Action> handler, CancellationToken ct = default); } } diff --git a/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs b/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs index 61908e4..b00ad20 100644 --- a/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs +++ b/CryptoExchange.Net/SharedApis/Models/ExchangeWebResult.cs @@ -100,7 +100,7 @@ namespace CryptoExchange.Net.SharedApis string exchange, TradingMode[]? dataTradeModes, HttpStatusCode? code, - IEnumerable>>? responseHeaders, + KeyValuePair[]? responseHeaders, TimeSpan? responseTime, long? responseLength, string? originalData, @@ -108,7 +108,7 @@ namespace CryptoExchange.Net.SharedApis string? requestUrl, string? requestBody, HttpMethod? requestMethod, - IEnumerable>>? requestHeaders, + KeyValuePair[]? requestHeaders, ResultDataSource dataSource, [AllowNull] T data, Error? error, diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs index d94e7af..1a1b97e 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetKlinesOptions.cs @@ -14,7 +14,7 @@ namespace CryptoExchange.Net.SharedApis /// /// The supported kline intervals /// - public IEnumerable SupportIntervals { get; } + public SharedKlineInterval[] SupportIntervals { get; } /// /// Max number of data points which can be requested /// diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs index 12e2745..7c117ee 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/GetOrderBookOptions.cs @@ -14,7 +14,7 @@ namespace CryptoExchange.Net.SharedApis /// /// Supported order book depths /// - public IEnumerable? SupportedLimits { get; set; } + public int[]? SupportedLimits { get; set; } /// /// The min order book depth @@ -37,7 +37,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetOrderBookOptions(IEnumerable supportedLimits, bool authenticated) : base(authenticated) + public GetOrderBookOptions(int[] supportedLimits, bool authenticated) : base(authenticated) { SupportedLimits = supportedLimits; } diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs index 36edbf2..ea83947 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Endpoints/PlaceSpotOrderOptions.cs @@ -26,8 +26,8 @@ namespace CryptoExchange.Net.SharedApis PlaceSpotOrderRequest request, TradingMode? tradingMode, TradingMode[] supportedApiTypes, - IEnumerable supportedOrderTypes, - IEnumerable supportedTimeInForce, + SharedOrderType[] supportedOrderTypes, + SharedTimeInForce[] supportedTimeInForce, SharedQuantitySupport quantitySupport) { if (request.OrderType == SharedOrderType.Other) diff --git a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs index 9b4bf27..bd3c36b 100644 --- a/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs +++ b/CryptoExchange.Net/SharedApis/Models/Options/Subscriptions/SubscribeOrderBookOptions.cs @@ -13,12 +13,12 @@ namespace CryptoExchange.Net.SharedApis /// /// Order book depths supported for updates /// - public IEnumerable SupportedLimits { get; } + public int[] SupportedLimits { get; } /// /// ctor /// - public SubscribeOrderBookOptions(bool needsAuthentication, IEnumerable limits) : base(needsAuthentication) + public SubscribeOrderBookOptions(bool needsAuthentication, int[] limits) : base(needsAuthentication) { SupportedLimits = limits; } diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs index c3d9cfc..3fe5aff 100644 --- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs +++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs @@ -19,7 +19,7 @@ namespace CryptoExchange.Net.SharedApis /// /// Asset networks info /// - public IEnumerable? Networks { get; set; } = Array.Empty(); + public SharedAssetNetwork[]? Networks { get; set; } = Array.Empty(); /// /// ctor diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs index 4fecefc..d4e85c9 100644 --- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs +++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedOrderBook.cs @@ -11,16 +11,16 @@ namespace CryptoExchange.Net.SharedApis /// /// Asks list /// - public IEnumerable Asks { get; set; } + public ISymbolOrderBookEntry[] Asks { get; set; } /// /// Bids list /// - public IEnumerable Bids { get; set; } + public ISymbolOrderBookEntry[] Bids { get; set; } /// /// ctor /// - public SharedOrderBook(IEnumerable asks, IEnumerable bids) + public SharedOrderBook(ISymbolOrderBookEntry[] asks, ISymbolOrderBookEntry[] bids) { Asks = asks; Bids = bids; diff --git a/CryptoExchange.Net/Sockets/SocketConnection.cs b/CryptoExchange.Net/Sockets/SocketConnection.cs index 8e32437..8816486 100644 --- a/CryptoExchange.Net/Sockets/SocketConnection.cs +++ b/CryptoExchange.Net/Sockets/SocketConnection.cs @@ -195,12 +195,12 @@ namespace CryptoExchange.Net.Sockets /// /// Current subscription topics on this connection /// - public IEnumerable Topics + public string[] Topics { get { lock (_listenersLock) - return _listeners.OfType().Select(x => x.Topic).Where(t => t != null).ToList()!; + return _listeners.OfType().Select(x => x.Topic).Where(t => t != null).ToArray()!; } } diff --git a/CryptoExchange.Net/Testing/Implementations/TestRequest.cs b/CryptoExchange.Net/Testing/Implementations/TestRequest.cs index 5f4d9b8..32ea87f 100644 --- a/CryptoExchange.Net/Testing/Implementations/TestRequest.cs +++ b/CryptoExchange.Net/Testing/Implementations/TestRequest.cs @@ -10,7 +10,7 @@ namespace CryptoExchange.Net.Testing.Implementations { internal class TestRequest : IRequest { - private readonly Dictionary> _headers = new Dictionary>(); + private readonly Dictionary _headers = new Dictionary(); private readonly TestResponse _response; public string Accept { set { } } @@ -35,7 +35,7 @@ namespace CryptoExchange.Net.Testing.Implementations _headers.Add(key, new[] { value }); } - public Dictionary> GetHeaders() => _headers; + public Dictionary GetHeaders() => _headers; public Task GetResponseAsync(CancellationToken cancellationToken) => Task.FromResult(_response); diff --git a/CryptoExchange.Net/Testing/Implementations/TestResponse.cs b/CryptoExchange.Net/Testing/Implementations/TestResponse.cs index 3cb32a0..53d59e4 100644 --- a/CryptoExchange.Net/Testing/Implementations/TestResponse.cs +++ b/CryptoExchange.Net/Testing/Implementations/TestResponse.cs @@ -16,7 +16,7 @@ namespace CryptoExchange.Net.Testing.Implementations public long? ContentLength { get; } - public IEnumerable>> ResponseHeaders { get; } = new Dictionary>(); + public KeyValuePair[] ResponseHeaders { get; } = new KeyValuePair[0]; public TestResponse(HttpStatusCode code, Stream response) { diff --git a/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs b/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs index f304249..11b7afc 100644 --- a/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs +++ b/CryptoExchange.Net/Trackers/Klines/IKlineTracker.cs @@ -91,7 +91,7 @@ namespace CryptoExchange.Net.Trackers.Klines /// Start timestamp to get the data from, defaults to tracked data start time /// End timestamp to get the data until, defaults to current time /// - IEnumerable GetData(DateTime? fromTimestamp = null, DateTime? toTimestamp = null); + SharedKline[] GetData(DateTime? fromTimestamp = null, DateTime? toTimestamp = null); /// /// Get statistics on the klines diff --git a/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs b/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs index a11c60f..c0cafd0 100644 --- a/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs +++ b/CryptoExchange.Net/Trackers/Klines/KlineTracker.cs @@ -285,7 +285,7 @@ namespace CryptoExchange.Net.Trackers.Klines } /// - public IEnumerable GetData(DateTime? since = null, DateTime? until = null) + public SharedKline[] GetData(DateTime? since = null, DateTime? until = null) { lock (_lock) { @@ -297,7 +297,7 @@ namespace CryptoExchange.Net.Trackers.Klines if (until != null) result = result.Where(d => d.OpenTime <= until); - return result.ToList(); + return result.ToArray(); } } diff --git a/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs b/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs index 713dee4..4f08aea 100644 --- a/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs +++ b/CryptoExchange.Net/Trackers/Trades/ITradeTracker.cs @@ -87,7 +87,7 @@ namespace CryptoExchange.Net.Trackers.Trades /// Start timestamp to get the data from, defaults to tracked data start time /// End timestamp to get the data until, defaults to current time /// - IEnumerable GetData(DateTime? fromTimestamp = null, DateTime? toTimestamp = null); + SharedTrade[] GetData(DateTime? fromTimestamp = null, DateTime? toTimestamp = null); /// /// Get statistics on the trades diff --git a/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs b/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs index e92be50..de534c3 100644 --- a/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs +++ b/CryptoExchange.Net/Trackers/Trades/TradeTracker.cs @@ -297,7 +297,7 @@ namespace CryptoExchange.Net.Trackers.Trades protected virtual Task DoStopAsync() => _updateSubscription?.CloseAsync() ?? Task.CompletedTask; /// - public IEnumerable GetData(DateTime? since = null, DateTime? until = null) + public SharedTrade[] GetData(DateTime? since = null, DateTime? until = null) { lock (_lock) { @@ -309,7 +309,7 @@ namespace CryptoExchange.Net.Trackers.Trades if (until != null) result = result.Where(d => d.Timestamp <= until); - return result.ToList(); + return result.ToArray(); } }