diff --git a/CryptoExchange.Net.UnitTests/CryptoExchange.Net.UnitTests.csproj b/CryptoExchange.Net.UnitTests/CryptoExchange.Net.UnitTests.csproj
index 3072a08..f463766 100644
--- a/CryptoExchange.Net.UnitTests/CryptoExchange.Net.UnitTests.csproj
+++ b/CryptoExchange.Net.UnitTests/CryptoExchange.Net.UnitTests.csproj
@@ -6,10 +6,10 @@
-
+
-
-
+
+
diff --git a/CryptoExchange.Net/CryptoExchange.Net.csproj b/CryptoExchange.Net/CryptoExchange.Net.csproj
index d40d470..597af1d 100644
--- a/CryptoExchange.Net/CryptoExchange.Net.csproj
+++ b/CryptoExchange.Net/CryptoExchange.Net.csproj
@@ -1,4 +1,4 @@
-
+
netstandard2.0;netstandard2.1;net8.0;net9.0
@@ -51,11 +51,11 @@
-
-
+
+
-
-
+
+
\ No newline at end of file
diff --git a/Examples/BlazorClient/BlazorClient.csproj b/Examples/BlazorClient/BlazorClient.csproj
index 989d7a8..1b8b490 100644
--- a/Examples/BlazorClient/BlazorClient.csproj
+++ b/Examples/BlazorClient/BlazorClient.csproj
@@ -5,31 +5,32 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
diff --git a/Examples/BlazorClient/Pages/Index.razor b/Examples/BlazorClient/Pages/Index.razor
index cb094b8..c0b15ef 100644
--- a/Examples/BlazorClient/Pages/Index.razor
+++ b/Examples/BlazorClient/Pages/Index.razor
@@ -21,6 +21,7 @@
@inject IMexcRestClient mexcClient
@inject IOKXRestClient okxClient
@inject IToobitRestClient toobitClient
+@inject IUpbitRestClient upbitClient
@inject IWhiteBitRestClient whitebitClient
@inject IXTRestClient xtClient
@@ -57,6 +58,7 @@
var mexcTask = mexcClient.SpotApi.ExchangeData.GetTickerAsync("BTCUSDT");
var okxTask = okxClient.UnifiedApi.ExchangeData.GetTickerAsync("BTC-USDT");
var toobitTask = toobitClient.SpotApi.ExchangeData.GetTickersAsync("BTCUSDT");
+ var upbitTask = upbitClient.SpotApi.ExchangeData.GetTickerAsync("USDT-BTC");
var whitebitTask = whitebitClient.V4Api.ExchangeData.GetTickersAsync();
var xtTask = xtClient.SpotApi.ExchangeData.GetTickersAsync("btc_usdt");
@@ -136,6 +138,9 @@
if (toobitTask.Result.Success)
_prices.Add("Toobit", toobitTask.Result.Data.Single().LastPrice ?? 0);
+ if (upbitTask.Result.Success)
+ _prices.Add("Upbit", upbitTask.Result.Data.LastPrice);
+
if (whitebitTask.Result.Success){
// WhiteBit API doesn't offer an endpoint to filter for a specific ticker, so we have to filter client side
var tickers = whitebitTask.Result.Data;
diff --git a/Examples/BlazorClient/Pages/LiveData.razor b/Examples/BlazorClient/Pages/LiveData.razor
index b0d477d..41ed49c 100644
--- a/Examples/BlazorClient/Pages/LiveData.razor
+++ b/Examples/BlazorClient/Pages/LiveData.razor
@@ -21,6 +21,7 @@
@inject IMexcSocketClient mexcSocketClient
@inject IOKXSocketClient okxSocketClient
@inject IToobitSocketClient toobitSocketClient
+@inject IUpbitSocketClient upbitSocketClient
@inject IWhiteBitSocketClient whitebitSocketClient
@inject IXTSocketClient xtSocketClient
@using System.Collections.Concurrent
@@ -72,6 +73,7 @@
okxSocketClient.UnifiedApi.ExchangeData.SubscribeToTickerUpdatesAsync("ETH-BTC", data => UpdateData("OKX", data.Data.LastPrice ?? 0)),
// Toobit doesn't support the ETH/BTC pair
//toobitSocketClient.SpotApi.SubscribeToTickerUpdatesAsync("ETHBTC", data => UpdateData("Toobit", data.Data.LastPrice ?? 0)),
+ upbitSocketClient.SpotApi.SubscribeToTickerUpdatesAsync("BTC-ETH", data => UpdateData("Upbit", data.Data.LastPrice)),
whitebitSocketClient.V4Api.SubscribeToTickerUpdatesAsync("ETH_BTC", data => UpdateData("WhiteBit", data.Data.Ticker.LastPrice)),
};
diff --git a/Examples/BlazorClient/Pages/OrderBooks.razor b/Examples/BlazorClient/Pages/OrderBooks.razor
index d556103..3538b4c 100644
--- a/Examples/BlazorClient/Pages/OrderBooks.razor
+++ b/Examples/BlazorClient/Pages/OrderBooks.razor
@@ -25,6 +25,7 @@
@using Kucoin.Net.Interfaces
@using Mexc.Net.Interfaces
@using OKX.Net.Interfaces;
+@using Upbit.Net.Interfaces;
@using Toobit.Net.Interfaces;
@using WhiteBit.Net.Interfaces
@using XT.Net.Interfaces
@@ -50,6 +51,7 @@
@inject IMexcOrderBookFactory mexcFactory
@inject IOKXOrderBookFactory okxFactory
@inject IToobitOrderBookFactory toobitFactory
+@inject IUpbitOrderBookFactory upbitFactory
@inject IWhiteBitOrderBookFactory whitebitFactory
@inject IXTOrderBookFactory xtFactory
@implements IDisposable
@@ -107,6 +109,7 @@
{ "Mexc", mexcFactory.CreateSpot("ETHBTC") },
{ "OKX", okxFactory.Create("ETH-BTC") },
{ "Toobit", toobitFactory.CreateSpot("ETHUSDT") },
+ { "Upbit", upbitFactory.CreateSpot("BTC-ETH") },
{ "WhiteBit", whitebitFactory.CreateV4("ETH_BTC") },
{ "XT", xtFactory.CreateSpot("eth_btc") },
};
diff --git a/Examples/BlazorClient/Pages/Trackers.razor b/Examples/BlazorClient/Pages/Trackers.razor
index 68cd088..fd369ed 100644
--- a/Examples/BlazorClient/Pages/Trackers.razor
+++ b/Examples/BlazorClient/Pages/Trackers.razor
@@ -26,6 +26,7 @@
@using Kucoin.Net.Interfaces
@using Mexc.Net.Interfaces
@using OKX.Net.Interfaces;
+@using Upbit.Net.Interfaces;
@using Toobit.Net.Interfaces;
@using WhiteBit.Net.Interfaces
@using XT.Net.Interfaces
@@ -51,11 +52,12 @@
@inject IMexcTrackerFactory mexcFactory
@inject IOKXTrackerFactory okxFactory
@inject IToobitTrackerFactory toobitFactory
+@inject IUpbitTrackerFactory upbitFactory
@inject IWhiteBitTrackerFactory whitebitFactory
@inject IXTTrackerFactory xtFactory
@implements IDisposable
-
ETH-BTC trade Trackers, live updates:
+Trade Trackers, live updates:
@foreach (var tracker in _trackers.OrderBy(p => p.Exchange))
{
@@ -103,11 +105,12 @@
{ mexcFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
{ okxFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
{ toobitFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
+ { upbitFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
{ whitebitFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
{ xtFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
};
- await Task.WhenAll(_trackers.Select(b => b.StartAsync()));
+ await Task.WhenAll(_trackers.Select(b => b.StartAsync(false)));
// Use a manual update timer so the page isn't refreshed too often
_timer = new Timer(500);
diff --git a/Examples/BlazorClient/Startup.cs b/Examples/BlazorClient/Startup.cs
index 6c9bdab..bc3c10b 100644
--- a/Examples/BlazorClient/Startup.cs
+++ b/Examples/BlazorClient/Startup.cs
@@ -54,6 +54,7 @@ namespace BlazorClient
services.AddMexc();
services.AddOKX();
services.AddToobit();
+ services.AddUpbit();
services.AddWhiteBit();
services.AddXT();
}
diff --git a/Examples/BlazorClient/_Imports.razor b/Examples/BlazorClient/_Imports.razor
index 17dfdf7..96c5d55 100644
--- a/Examples/BlazorClient/_Imports.razor
+++ b/Examples/BlazorClient/_Imports.razor
@@ -29,6 +29,7 @@
@using Kucoin.Net.Interfaces.Clients;
@using Mexc.Net.Interfaces.Clients;
@using OKX.Net.Interfaces.Clients;
+@using Upbit.Net.Interfaces.Clients;
@using Toobit.Net.Interfaces.Clients;
@using WhiteBit.Net.Interfaces.Clients
@using XT.Net.Interfaces.Clients
diff --git a/Examples/ConsoleClient/ConsoleClient.csproj b/Examples/ConsoleClient/ConsoleClient.csproj
index 5f7c65d..3288420 100644
--- a/Examples/ConsoleClient/ConsoleClient.csproj
+++ b/Examples/ConsoleClient/ConsoleClient.csproj
@@ -6,20 +6,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/SharedClients/SharedClients.csproj b/Examples/SharedClients/SharedClients.csproj
index bf1b035..943f401 100644
--- a/Examples/SharedClients/SharedClients.csproj
+++ b/Examples/SharedClients/SharedClients.csproj
@@ -8,9 +8,9 @@
-
-
-
+
+
+