Skip to content

Commit 0c1568f

Browse files
authored
Release/7.0.0 (#135)
* Updated CryptoExchange.Net to version 9.0.0, see https://github.com/JKorf/CryptoExchange.Net/releases/ * Added support for Native AOT compilation * Added RateLimitUpdated event * Added SharedSymbol response property to all Shared interfaces response models returning a symbol name * Added GenerateClientOrderId method to UsdtFuturesApi and Spot Shared clients * Added IBookTickerRestClient implementation to SpotApi and UsdtFuturesApi Shared clients * Added ISpotOrderClientIdClient implementation to SpotApi Shared client * Added ISpotTriggerOrderRestClient implementation to SpotApi Shared client * Added IFuturesOrderClientIdClient implementation to UsdtFuturesApi Shared client * Added IFuturesTriggerOrderRestClient implementation to UsdtFuturesApi Shared client * Added IFuturesTpSlRestClient implementation to UsdtFuturesApi Shared client * Added takeProfitPrice, stopLossPrice parameter support for UsdtFuturesApi Shared PlaceFuturesOrderAsync endpoint * Added IsTriggerOrder property to SharedSpotOrder model * Added OptionalExchangeParameters and Supported properties to EndpointOptions * Added QuoteVolume property mapping to SharedSpotTicker model * Added All property to retrieve all available environment on HTXEnvironment * Refactored Shared clients quantity parameters and responses to use SharedQuantity * Updated all IEnumerable response and model types to array response types * Removed Newtonsoft.Json dependency * Removed legacy ISpotClient implementation * Removed legacy AddHTX(restOptions, socketOptions) DI overload * Fixed some typos * Fixed deserialization error for restClient.UsdtFuturesApi.Account.GetIsolatedMarginAccountInfoAsync * Fixed incorrect DataTradeMode on certain Shared interface responses * Fixed restClient.UsdtFuturesApi.Trading.PlaceIsolatedMarginTriggerOrderAsync and PlaceCrossMarginTriggerOrderAsync reduceOnly parameter * Fixed socketClient.UsdtFuturesApi.SubscribeToCrossMarginPositionUpdatesAsync updates * Fixed incorrect Symbol returned in some UsdtFuturesApi Shared socket updates
1 parent c03cbb6 commit 0c1568f

File tree

329 files changed

+8108
-1827
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

329 files changed

+8108
-1827
lines changed

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,10 @@ What endpoints and subscriptions are called.
1616
**Expected behavior**
1717
A clear and concise description of what you expected to happen.
1818

19-
**Debug logging**
20-
Add debug logging related to the issue. Enable Debug logging in the client options by settings LogLevel to Debug.
19+
**Additional info**
20+
If the issue is with a specific endpoint please provide:
21+
response.RequestBody:
22+
If possible enable the `options.Rest.OutputOriginalData` client options and provide:
23+
response.OriginalData:
24+
25+
If available provide related logging:

Examples/HTX.Examples.Api/Program.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,10 @@
1212

1313
// OR to provide API credentials for accessing private endpoints, or setting other options:
1414
/*
15-
builder.Services.AddHTX(restOptions =>
16-
{
17-
restOptions.ApiCredentials = new ApiCredentials("<APIKEY>", "<APISECRET>");
18-
restOptions.RequestTimeout = TimeSpan.FromSeconds(5);
19-
}, socketOptions =>
20-
{
21-
socketOptions.ApiCredentials = new ApiCredentials("<APIKEY>", "<APISECRET>");
15+
builder.Services.AddHTX(options =>
16+
{
17+
options.ApiCredentials = new ApiCredentials("<APIKEY>", "<APISECRET>");
18+
options.Rest.RequestTimeout = TimeSpan.FromSeconds(5);
2219
});
2320
*/
2421

Examples/HTX.Examples.Console/Program.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using HTX.Net.Clients;
22
using CryptoExchange.Net.Objects;
33
using Microsoft.Extensions.Logging;
4+
using HTX.Net.Objects.Options;
5+
using Microsoft.Extensions.Options;
46

57
// REST
68
var restClient = new HTXRestClient();
@@ -16,7 +18,7 @@
1618
var logFactory = new LoggerFactory();
1719
logFactory.AddProvider(new TraceLoggerProvider());
1820

19-
var socketClient = new HTXSocketClient(logFactory);
21+
var socketClient = new HTXSocketClient(Options.Create(new HTXSocketOptions { }), logFactory);
2022
var subscription = await socketClient.SpotApi.SubscribeToTickerUpdatesAsync("ethusdt", update =>
2123
{
2224
Console.WriteLine($"Websocket client ticker price for ETHUSDT: {update.Data.ClosePrice}");

HTX.Net.UnitTests/Endpoints/UsdtMarginSwap/Trading/CancelCrossMarginTriggerOrder.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@ true
55
"status": "ok",
66
"data": {
77
"errors": [
8-
{
9-
"order_id": "1888",
10-
"err_code": 1061,
11-
"err_msg": "This order doesnt exist."
12-
}
138
],
149
"successes": "1880"
1510
},

HTX.Net.UnitTests/Endpoints/UsdtMarginSwap/Trading/CancelIsolatedMarginTriggerOrder.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@ true
55
"status": "ok",
66
"data": {
77
"errors": [
8-
{
9-
"order_id": "34",
10-
"err_code": 1061,
11-
"err_msg": "This order doesnt exist."
12-
}
138
],
149
"successes": "1"
1510
},

HTX.Net.UnitTests/Endpoints/UsdtMarginSwap/Trading/GetCrossMarginOrderDetails.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ true
3333
"real_profit": 0,
3434
"profit": 0,
3535
"id": "131560927-770334322963152896-1",
36-
"fee_asset": "",
3736
"price": ""
3837
}
3938
],

HTX.Net.UnitTests/Endpoints/UsdtMarginSwap/Trading/GetIsolatedMarginOrderDetails.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ true
3333
"real_profit": 0,
3434
"profit": 0,
3535
"id": "131560927-770334322963152896-1",
36-
"fee_asset": "",
3736
"price": ""
3837
}
3938
],

HTX.Net.UnitTests/HTXRestClientTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ public async Task ReceivingHttpErrorResponse_Should_FailCall()
4545

4646
// assert
4747
ClassicAssert.IsFalse(result.Success);
48-
Assert.That(result.Error.ToString().Contains("Error message"));
4948
}
5049

5150

HTX.Net.UnitTests/HTXRestIntegrationTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System.Threading.Tasks;
1212
using HTX.Net.Enums;
1313
using Microsoft.Extensions.Options;
14+
using HTX.Net.SymbolOrderBooks;
1415

1516
namespace HTX.Net.UnitTests
1617
{
@@ -173,5 +174,13 @@ public async Task TestUsdtFuturesApiTrading()
173174
await RunAndCheckResult(client => client.UsdtFuturesApi.Trading.GetClosedIsolatedMarginTrailingOrdersAsync("ETH-USDT", new[] { TpSlStatus.Canceled }, MarginTradeType.BuyLong, 90, default, default, default, default), true);
174175
await RunAndCheckResult(client => client.UsdtFuturesApi.Trading.GetClosedCrossMarginTrailingOrdersAsync(new[] { TpSlStatus.Canceled }, MarginTradeType.BuyLong, 90, "ETH-USDT", default, default, default, default, default, default), true);
175176
}
177+
178+
[Test]
179+
public async Task TestOrderBooks()
180+
{
181+
await TestOrderBook(new HTXSpotSymbolOrderBook("ETHUSDT"));
182+
await TestOrderBook(new HTXUsdtFuturesSymbolOrderBook("ETH-USDT"));
183+
}
184+
176185
}
177186
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using HTX.Net.Clients;
2+
using HTX.Net.Objects.Models;
3+
using HTX.Net.Objects.Options;
4+
using CryptoExchange.Net.Testing;
5+
using Microsoft.Extensions.Logging;
6+
using Microsoft.Extensions.Options;
7+
using NUnit.Framework;
8+
using System;
9+
using System.Threading.Tasks;
10+
using HTX.Net.Objects.Models.Socket;
11+
12+
namespace HTX.Net.UnitTests
13+
{
14+
[NonParallelizable]
15+
internal class HTXSocketIntegrationTests : SocketIntegrationTest<HTXSocketClient>
16+
{
17+
public override bool Run { get; set; } = false;
18+
19+
public HTXSocketIntegrationTests()
20+
{
21+
}
22+
23+
public override HTXSocketClient GetClient(ILoggerFactory loggerFactory)
24+
{
25+
var key = Environment.GetEnvironmentVariable("APIKEY");
26+
var sec = Environment.GetEnvironmentVariable("APISECRET");
27+
28+
Authenticated = key != null && sec != null;
29+
return new HTXSocketClient(Options.Create(new HTXSocketOptions
30+
{
31+
OutputOriginalData = true,
32+
ApiCredentials = Authenticated ? new CryptoExchange.Net.Authentication.ApiCredentials(key, sec) : null
33+
}), loggerFactory);
34+
}
35+
36+
[Test]
37+
public async Task TestSubscriptions()
38+
{
39+
await RunAndCheckUpdate<HTXSymbolTick>((client, updateHandler) => client.SpotApi.SubscribeToAccountUpdatesAsync(default , default, default), false, true);
40+
await RunAndCheckUpdate<HTXSymbolTick>((client, updateHandler) => client.SpotApi.SubscribeToTickerUpdatesAsync("ETHUSDT", updateHandler, default), true, false);
41+
42+
await RunAndCheckUpdate<HTXSymbolTick>((client, updateHandler) => client.UsdtFuturesApi.SubscribeToCrossMarginBalanceUpdatesAsync(default, default), false, true);
43+
await RunAndCheckUpdate<HTXSymbolTickUpdate>((client, updateHandler) => client.UsdtFuturesApi.SubscribeToTickerUpdatesAsync("ETH-USDT", updateHandler, default), true, false);
44+
}
45+
}
46+
}

0 commit comments

Comments
 (0)