From 0e95bcdc4cf5fb00e4a2ca9cdbedfc6958299a04 Mon Sep 17 00:00:00 2001 From: Grintcevich Timofey Anatolevich Date: Wed, 28 Nov 2018 18:01:38 +0000 Subject: [PATCH] https://github.com/mehtadone/CryptoGramBot/issues/91 Bittrex returned an error 6000 : INVALID_SIGNATURE --- CryptoGramBot/CryptoGramBot.csproj | 4 +- .../Helpers/Convertors/BittrexConvertor.cs | 26 ++++----- .../Services/Exchanges/BittrexService.cs | 55 +++++++++++++------ CryptoGramBot/Startup.cs | 14 ++++- 4 files changed, 62 insertions(+), 37 deletions(-) diff --git a/CryptoGramBot/CryptoGramBot.csproj b/CryptoGramBot/CryptoGramBot.csproj index d7dee74..3a3a1cc 100644 --- a/CryptoGramBot/CryptoGramBot.csproj +++ b/CryptoGramBot/CryptoGramBot.csproj @@ -17,7 +17,7 @@ - + @@ -31,7 +31,7 @@ - + diff --git a/CryptoGramBot/Helpers/Convertors/BittrexConvertor.cs b/CryptoGramBot/Helpers/Convertors/BittrexConvertor.cs index 0132bd0..3f86a28 100644 --- a/CryptoGramBot/Helpers/Convertors/BittrexConvertor.cs +++ b/CryptoGramBot/Helpers/Convertors/BittrexConvertor.cs @@ -52,7 +52,7 @@ public static List BittrexToDeposits(BittrexDeposit[] responseResult) return list; } - public static List BittrexToOpenOrders(BittrexOrder[] bittrexOrders) + public static List BittrexToOpenOrders(BittrexOpenOrdersOrder[] bittrexOrders) { var list = new List(); @@ -66,8 +66,8 @@ public static List BittrexToOpenOrders(BittrexOrder[] bittrexOrders) Exchange = Constants.Bittrex, CommissionPaid = openOrder.CommissionPaid, OrderUuid = openOrder.OrderUuid.ToString(), - Condition = openOrder.Condition, - ConditionTarget = openOrder.ConditionTarget, + Condition = openOrder.Condition.ToString(), + ConditionTarget = openOrder.ConditionTarget?.ToString(), CancelInitiated = openOrder.CancelInitiated, ImmediateOrCancel = openOrder.ImmediateOrCancel, IsConditional = openOrder.IsConditional, @@ -76,7 +76,7 @@ public static List BittrexToOpenOrders(BittrexOrder[] bittrexOrders) Price = openOrder.Price, Quantity = openOrder.Quantity, QuantityRemaining = openOrder.QuantityRemaining, - Side = openOrder.OrderType == OrderTypeExtended.LimitBuy ? TradeSide.Buy : TradeSide.Sell + Side = openOrder.OrderType == OrderSideExtended.LimitBuy ? TradeSide.Buy : TradeSide.Sell }; list.Add(order); @@ -85,7 +85,7 @@ public static List BittrexToOpenOrders(BittrexOrder[] bittrexOrders) return list; } - public static List BittrexToTrades(BittrexOrder[] bittrexTrades, ILogger logger) + public static List BittrexToTrades(BittrexOrderHistoryOrder[] bittrexTrades, ILogger logger) { var tradeList = new List(); @@ -97,24 +97,24 @@ public static List BittrexToTrades(BittrexOrder[] bittrexTrades, ILogger Exchange = Constants.Bittrex, Base = ccy[0], Terms = ccy[1], - Commission = completedOrder.CommissionPaid, + Commission = completedOrder.Commission, ExchangeId = completedOrder.OrderUuid.ToString(), Limit = completedOrder.Limit, Quantity = completedOrder.Quantity, QuantityRemaining = completedOrder.QuantityRemaining, Timestamp = completedOrder.Closed.GetValueOrDefault(), - Side = completedOrder.OrderType == OrderTypeExtended.LimitBuy ? TradeSide.Buy : TradeSide.Sell + Side = completedOrder.OrderType == OrderSideExtended.LimitBuy ? TradeSide.Buy : TradeSide.Sell }; if (completedOrder.Closed.HasValue) if (trade.Side == TradeSide.Buy) { - trade.Cost = completedOrder.Price + completedOrder.CommissionPaid; + trade.Cost = completedOrder.Price + completedOrder.Commission; } else if (trade.Side == TradeSide.Sell) { - trade.Cost = completedOrder.Price - completedOrder.CommissionPaid; + trade.Cost = completedOrder.Price - completedOrder.Commission; } else { @@ -140,12 +140,10 @@ public static List BittrexToWalletBalances(BittrexBalance[] respo Exchange = Constants.Bittrex, Timestamp = DateTime.Now, Address = wallet.CryptoAddress, - Available = wallet.Available, - Balance = wallet.Balance, - Pending = wallet.Pending, + Available = wallet.Available ?? 0, + Balance = wallet.Balance ?? 0, + Pending = wallet.Pending ?? 0, Currency = wallet.Currency, - Requested = wallet.Requested, - Uuid = wallet.Uuid }; if (String.IsNullOrEmpty(wallet.CryptoAddress)) diff --git a/CryptoGramBot/Services/Exchanges/BittrexService.cs b/CryptoGramBot/Services/Exchanges/BittrexService.cs index e37f838..28448f8 100644 --- a/CryptoGramBot/Services/Exchanges/BittrexService.cs +++ b/CryptoGramBot/Services/Exchanges/BittrexService.cs @@ -3,6 +3,7 @@ using System.Threading.Tasks; using Bittrex.Net; using Bittrex.Net.Objects; +using CryptoExchange.Net.Authentication; using CryptoGramBot.Configuration; using CryptoGramBot.Helpers; using CryptoGramBot.Models; @@ -40,17 +41,20 @@ public async Task GetBalance() List bittrexBalances = new List(); try { - using (var client = new BittrexClient(_config.Key, _config.Secret)) + using (var client = new BittrexClient(new BittrexClientOptions() + { + ApiCredentials = new ApiCredentials(_config.Key, _config.Secret) + })) { var response = await client.GetBalancesAsync(); if (response.Success) { - bittrexBalances = BittrexConvertor.BittrexToWalletBalances(response.Result); + bittrexBalances = BittrexConvertor.BittrexToWalletBalances(response.Data); } else { - _log.LogWarning($"Bittrex returned an error {response.Error.ErrorCode} : {response.Error.ErrorMessage}"); + _log.LogWarning($"Bittrex returned an error {response.Error.Code} : {response.Error.Message}"); } } } @@ -138,17 +142,20 @@ public async Task> GetNewDeposits() try { - using (var client = new BittrexClient(_config.Key, _config.Secret)) + using (var client = new BittrexClient(new BittrexClientOptions() + { + ApiCredentials = new ApiCredentials(_config.Key, _config.Secret) + })) { var response = await client.GetDepositHistoryAsync(); if (response.Success) { - list = BittrexConvertor.BittrexToDeposits(response.Result); + list = BittrexConvertor.BittrexToDeposits(response.Data); } else { - _log.LogWarning($"Bittrex returned an error {response.Error.ErrorCode} : {response.Error.ErrorMessage}"); + _log.LogWarning($"Bittrex returned an error {response.Error.Code} : {response.Error.Message}"); } } } @@ -169,17 +176,20 @@ public async Task> GetNewOpenOrders(DateTime lastChecked) try { - using (var client = new BittrexClient(_config.Key, _config.Secret)) + using (var client = new BittrexClient(new BittrexClientOptions() + { + ApiCredentials = new ApiCredentials(_config.Key, _config.Secret) + })) { var response = await client.GetOpenOrdersAsync(); if (response.Success) { - openOrders = BittrexConvertor.BittrexToOpenOrders(response.Result); + openOrders = BittrexConvertor.BittrexToOpenOrders(response.Data); } else { - _log.LogWarning($"Bittrex returned an error {response.Error.ErrorCode} : {response.Error.ErrorMessage}"); + _log.LogWarning($"Bittrex returned an error {response.Error.Code} : {response.Error.Message}"); } } } @@ -199,17 +209,20 @@ public async Task> GetNewWithdrawals() try { - using (var client = new BittrexClient(_config.Key, _config.Secret)) + using (var client = new BittrexClient(new BittrexClientOptions() + { + ApiCredentials = new ApiCredentials(_config.Key, _config.Secret) + })) { var response = await client.GetWithdrawalHistoryAsync(); if (response.Success) { - list = BittrexConvertor.BittrexToWithdrawals(response.Result); + list = BittrexConvertor.BittrexToWithdrawals(response.Data); } else { - _log.LogWarning($"Bittrex returned an error {response.Error.ErrorCode} : {response.Error.ErrorMessage}"); + _log.LogWarning($"Bittrex returned an error {response.Error.Code} : {response.Error.Message}"); } } } @@ -229,17 +242,20 @@ public async Task> GetOrderHistory(DateTime lastChecked) try { - using (var client = new BittrexClient(_config.Key, _config.Secret)) + using (var client = new BittrexClient(new BittrexClientOptions() + { + ApiCredentials = new ApiCredentials(_config.Key, _config.Secret) + })) { var response = await client.GetOrderHistoryAsync(); if (response.Success) { - list = BittrexConvertor.BittrexToTrades(response.Result, _log); + list = BittrexConvertor.BittrexToTrades(response.Data, _log); } else { - _log.LogWarning($"Bittrex returned an error {response.Error.ErrorCode} : {response.Error.ErrorMessage}"); + _log.LogWarning($"Bittrex returned an error {response.Error.Code} : {response.Error.Message}"); } } } @@ -295,16 +311,19 @@ public async Task GetPrice(string baseCcy, string termsCurrency) private async Task GetTicker(string baseCcy, string termsCurrency) { - using (var client = new BittrexClient(_config.Key, _config.Secret)) + using (var client = new BittrexClient(new BittrexClientOptions() + { + ApiCredentials = new ApiCredentials(_config.Key, _config.Secret) + })) { var response = await client.GetTickerAsync($"{baseCcy}-{termsCurrency}"); if (response.Success) { - return response.Result; + return response.Data; } - _log.LogWarning($"Bittrex returned an error {response.Error.ErrorCode} : {response.Error.ErrorMessage}"); + _log.LogWarning($"Bittrex returned an error {response.Error.Code} : {response.Error.Message}"); return null; } } diff --git a/CryptoGramBot/Startup.cs b/CryptoGramBot/Startup.cs index 3a916cc..08e4c67 100644 --- a/CryptoGramBot/Startup.cs +++ b/CryptoGramBot/Startup.cs @@ -2,7 +2,6 @@ using Autofac.Extensions.DependencyInjection; using Binance; using Bittrex.Net; -using Bittrex.Net.RateLimiter; using CryptoGramBot.Configuration; using CryptoGramBot.Data; using CryptoGramBot.Extensions; @@ -26,7 +25,10 @@ using Microsoft.Extensions.Options; using Serilog; using System; +using System.Collections.Generic; using System.Threading.Tasks; +using Bittrex.Net.Objects; +using CryptoExchange.Net.RateLimiter; namespace CryptoGramBot { @@ -284,8 +286,14 @@ private async Task OnStarting() var limiterTotal = new RateLimiterPerEndpoint(1, TimeSpan.FromSeconds(1)); var limiterPerEndpoint = new RateLimiterPerEndpoint(1, TimeSpan.FromSeconds(1)); - BittrexDefaults.AddDefaultRateLimiter(limiterTotal); - BittrexDefaults.AddDefaultRateLimiter(limiterPerEndpoint); + BittrexClient.SetDefaultOptions(new BittrexClientOptions + { + RateLimiters = new List + { + limiterTotal, + limiterPerEndpoint + } + }); startupService.Start(); }