Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/v2 api #69

Merged
merged 18 commits into from
Apr 6, 2024
Prev Previous commit
Next Next commit
Versioning
JKorf committed Apr 4, 2024

Verified

This commit was signed with the committer’s verified signature. The key has expired.
addaleax Anna Henningsen
commit 537d2167a545d810f7e3a3d1ea8afbf9c99afb3d
6 changes: 3 additions & 3 deletions CoinEx.Net.UnitTests/CoinExClientTests.cs
Original file line number Diff line number Diff line change
@@ -16,10 +16,10 @@
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Sockets;
using CoinEx.Net.Clients;
using CoinEx.Net.Clients.SpotApi;
using CoinEx.Net.ExtensionMethods;
using CryptoExchange.Net.Objects.Sockets;
using NUnit.Framework.Legacy;
using CoinEx.Net.Clients.SpotApiV1;

namespace CoinEx.Net.UnitTests
{
@@ -41,7 +41,7 @@ public async Task ReceivingError_Should_ReturnErrorAndNotSuccess()
TestHelpers.SetResponse((CoinExRestClient)client, JsonConvert.SerializeObject(resultObj));

// act
var result = await client.SpotApiV1.ExchangeData.GetAssetsAsync();
var result = await client.SpotApi.ExchangeData.GetAssetsAsync();

// assert
ClassicAssert.IsFalse(result.Success);
@@ -58,7 +58,7 @@ public async Task ReceivingHttpErrorWithNoJson_Should_ReturnErrorAndNotSuccess()
TestHelpers.SetResponse((CoinExRestClient)client, "", System.Net.HttpStatusCode.BadRequest);

// act
var result = await client.SpotApiV1.ExchangeData.GetAssetsAsync();
var result = await client.SpotApi.ExchangeData.GetAssetsAsync();

// assert
ClassicAssert.IsFalse(result.Success);
12 changes: 5 additions & 7 deletions CoinEx.Net/Clients/CoinExRestClient.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using CoinEx.Net.Interfaces.Clients;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CoinEx.Net.Clients.SpotApi;
using CryptoExchange.Net.Authentication;
using Microsoft.Extensions.Logging;
using System.Net.Http;
@@ -15,9 +13,9 @@ public class CoinExRestClient : BaseRestClient, ICoinExRestClient
{
#region Api clients
/// <inheritdoc />
public ICoinExClientSpotApiV1 SpotApiV1 { get; }
public Interfaces.Clients.SpotApiV1.ICoinExRestClientSpotApi SpotApi { get; }
/// <inheritdoc />
public ICoinExClientSpotApi SpotApi { get; }
public Interfaces.Clients.SpotApiV2.ICoinExRestClientSpotApi SpotApiV2 { get; }
#endregion

#region ctor
@@ -43,8 +41,8 @@ public CoinExRestClient(HttpClient? httpClient, ILoggerFactory? loggerFactory, A
optionsDelegate(options);
Initialize(options);

SpotApi = AddApiClient(new CoinExRestClientSpotApi(_logger, httpClient, options));
SpotApiV1 = AddApiClient(new CoinExRestClientSpotApiV1(_logger, httpClient, options));
SpotApi = AddApiClient(new SpotApiV1.CoinExRestClientSpotApi(_logger, httpClient, options));
SpotApiV2 = AddApiClient(new SpotApiV2.CoinExRestClientSpotApi(_logger, httpClient, options));
}
#endregion

@@ -64,7 +62,7 @@ public static void SetDefaultOptions(Action<CoinExRestOptions> optionsDelegate)
public void SetApiCredentials(ApiCredentials credentials)
{
SpotApi.SetApiCredentials(credentials);
SpotApiV1.SetApiCredentials(credentials);
SpotApiV2.SetApiCredentials(credentials);
}
#endregion
}
14 changes: 7 additions & 7 deletions CoinEx.Net/Clients/CoinExSocketClient.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using CoinEx.Net.Interfaces.Clients;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CoinEx.Net.Clients.SpotApi;
using CryptoExchange.Net.Authentication;
using Microsoft.Extensions.Logging;
using System;
@@ -15,8 +13,9 @@ public class CoinExSocketClient : BaseSocketClient, ICoinExSocketClient
#region Api clients

/// <inheritdoc />
public ICoinExSocketClientSpotApi SpotApi { get; }
public ICoinExSocketClientSpotApiV1 SpotApiV1 { get; }
public Interfaces.Clients.SpotApiV2.ICoinExSocketClientSpotApi SpotApiV2 { get; }
/// <inheritdoc />
public Interfaces.Clients.SpotApiV1.ICoinExSocketClientSpotApi SpotApi { get; }

#endregion

@@ -49,8 +48,8 @@ public CoinExSocketClient(Action<CoinExSocketOptions> optionsDelegate, ILoggerFa
optionsDelegate(options);
Initialize(options);

SpotApi = AddApiClient(new CoinExSocketClientSpotApi(_logger, options));
SpotApiV1 = AddApiClient(new CoinExSocketClientSpotApiV1(_logger, options));
SpotApi = AddApiClient(new SpotApiV1.CoinExSocketClientSpotApi(_logger, options));
SpotApiV2 = AddApiClient(new SpotApiV2.CoinExSocketClientSpotApi(_logger, options));
}
#endregion

@@ -68,7 +67,8 @@ public static void SetDefaultOptions(Action<CoinExSocketOptions> optionsDelegate
/// <inheritdoc />
public void SetApiCredentials(ApiCredentials credentials)
{
SpotApiV1.SetApiCredentials(credentials);
SpotApiV2.SetApiCredentials(credentials);
SpotApi.SetApiCredentials(credentials);
}
}
}
Original file line number Diff line number Diff line change
@@ -10,7 +10,6 @@
using CoinEx.Net.Enums;
using CoinEx.Net.Objects.Internal;
using CoinEx.Net.Objects.Models;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CryptoExchange.Net.CommonObjects;
using System.Globalization;
using CryptoExchange.Net.Interfaces.CommonClients;
@@ -20,11 +19,12 @@
using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Converters.MessageParsing;
using CryptoExchange.Net.Clients;
using CoinEx.Net.Interfaces.Clients.SpotApiV1;

namespace CoinEx.Net.Clients.SpotApi
namespace CoinEx.Net.Clients.SpotApiV1
{
/// <inheritdoc cref="ICoinExClientSpotApiV1" />
public class CoinExRestClientSpotApiV1 : RestApiClient, ICoinExClientSpotApiV1, ISpotClient
/// <inheritdoc cref="ICoinExRestClientSpotApi" />
public class CoinExRestClientSpotApi : RestApiClient, ICoinExRestClientSpotApi, ISpotClient
{
#region fields
/// <inheritdoc />
@@ -45,22 +45,22 @@ public class CoinExRestClientSpotApiV1 : RestApiClient, ICoinExClientSpotApiV1,

#region Api clients
/// <inheritdoc />
public ICoinExClientSpotApiV1Account Account { get; }
public ICoinExRestClientSpotApiAccount Account { get; }
/// <inheritdoc />
public ICoinExClientSpotApiV1ExchangeData ExchangeData { get; }
public ICoinExRestClientSpotApiExchangeData ExchangeData { get; }
/// <inheritdoc />
public ICoinExClientSpotApiV1Trading Trading { get; }
public ICoinExRestClientSpotApiTrading Trading { get; }
#endregion

internal readonly string _brokerId;

#region ctor
internal CoinExRestClientSpotApiV1(ILogger logger, HttpClient? httpClient, CoinExRestOptions options) :
internal CoinExRestClientSpotApi(ILogger logger, HttpClient? httpClient, CoinExRestOptions options) :
base(logger, httpClient, options.Environment.RestBaseAddress, options, options.SpotOptions)
{
Account = new CoinExRestClientSpotApiV1Account(this);
ExchangeData = new CoinExRestClientSpotApiV1ExchangeData(this);
Trading = new CoinExRestClientSpotApiV1Trading(this);
Account = new CoinExRestClientSpotApiAccount(this);
ExchangeData = new CoinExRestClientSpotApiExchangeData(this);
Trading = new CoinExRestClientSpotApiTrading(this);

ParameterPositions[HttpMethod.Delete] = HttpMethodParameterPosition.InUri;

Original file line number Diff line number Diff line change
@@ -6,12 +6,12 @@
using System.Threading;
using System.Threading.Tasks;
using CoinEx.Net.Objects.Models;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CoinEx.Net.Interfaces.Clients.SpotApiV1;

namespace CoinEx.Net.Clients.SpotApi
namespace CoinEx.Net.Clients.SpotApiV1
{
/// <inheritdoc />
public class CoinExRestClientSpotApiV1Account : ICoinExClientSpotApiV1Account
public class CoinExRestClientSpotApiAccount : ICoinExRestClientSpotApiAccount
{
private const string AccountInfoEndpoint = "balance/info";
private const string WithdrawalHistoryEndpoint = "balance/coin/withdraw";
@@ -21,9 +21,9 @@ public class CoinExRestClientSpotApiV1Account : ICoinExClientSpotApiV1Account
private const string DepositAddressEndpoint = "balance/deposit/address/";


private readonly CoinExRestClientSpotApiV1 _baseClient;
private readonly CoinExRestClientSpotApi _baseClient;

internal CoinExRestClientSpotApiV1Account(CoinExRestClientSpotApiV1 baseClient)
internal CoinExRestClientSpotApiAccount(CoinExRestClientSpotApi baseClient)
{
_baseClient = baseClient;
}
Original file line number Diff line number Diff line change
@@ -8,13 +8,12 @@
using System.Threading;
using System.Threading.Tasks;
using CoinEx.Net.Objects.Models;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CoinEx.Net.ExtensionMethods;
using CoinEx.Net.Interfaces.Clients.SpotApiV1;

namespace CoinEx.Net.Clients.SpotApi
namespace CoinEx.Net.Clients.SpotApiV1
{
/// <inheritdoc />
public class CoinExRestClientSpotApiV1ExchangeData : ICoinExClientSpotApiV1ExchangeData
public class CoinExRestClientSpotApiExchangeData : ICoinExRestClientSpotApiExchangeData
{
private const string AssetConfigEndpoint = "common/asset/config";
private const string CurrencyRateEndpoint = "common/currency/rate";
@@ -28,9 +27,9 @@ public class CoinExRestClientSpotApiV1ExchangeData : ICoinExClientSpotApiV1Excha
private const string MarketInfoEndpoint = "market/info";
private const string MiningDifficultyEndpoint = "order/mining/difficulty";

private readonly CoinExRestClientSpotApiV1 _baseClient;
private readonly CoinExRestClientSpotApi _baseClient;

internal CoinExRestClientSpotApiV1ExchangeData(CoinExRestClientSpotApiV1 baseClient)
internal CoinExRestClientSpotApiExchangeData(CoinExRestClientSpotApi baseClient)
{
_baseClient = baseClient;
}
Original file line number Diff line number Diff line change
@@ -10,14 +10,13 @@
using System.Threading;
using System.Threading.Tasks;
using CoinEx.Net.Objects.Models;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CryptoExchange.Net.CommonObjects;
using CoinEx.Net.ExtensionMethods;
using CoinEx.Net.Interfaces.Clients.SpotApiV1;

namespace CoinEx.Net.Clients.SpotApi
namespace CoinEx.Net.Clients.SpotApiV1
{
/// <inheritdoc />
public class CoinExRestClientSpotApiV1Trading : ICoinExClientSpotApiV1Trading
public class CoinExRestClientSpotApiTrading : ICoinExRestClientSpotApiTrading
{
private const string PlaceLimitOrderEndpoint = "order/limit";
private const string PlaceMarketOrderEndpoint = "order/market";
@@ -33,9 +32,9 @@ public class CoinExRestClientSpotApiV1Trading : ICoinExClientSpotApiV1Trading
private const string CancelOrderEndpoint = "order/pending";
private const string CancelStopOrderEndpoint = "order/stop/pending";

private readonly CoinExRestClientSpotApiV1 _baseClient;
private readonly CoinExRestClientSpotApi _baseClient;

internal CoinExRestClientSpotApiV1Trading(CoinExRestClientSpotApiV1 baseClient)
internal CoinExRestClientSpotApiTrading(CoinExRestClientSpotApi baseClient)
{
_baseClient = baseClient;
}
Original file line number Diff line number Diff line change
@@ -14,26 +14,24 @@
using CoinEx.Net.Objects.Internal;
using CoinEx.Net.Objects.Models;
using CoinEx.Net.Objects.Models.Socket;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CoinEx.Net.Objects.Options;
using CryptoExchange.Net.Objects.Sockets;
using CoinEx.Net.Objects.Sockets.Queries;
using CryptoExchange.Net.Converters;
using CoinEx.Net.Objects.Sockets;
using CoinEx.Net.Objects.Sockets.Subscriptions.Deals;
using CoinEx.Net.Objects.Sockets.Subscriptions.Balance;
using CoinEx.Net.Objects.Sockets.Subscriptions.Depth;
using CoinEx.Net.Objects.Sockets.Subscriptions.State;
using CoinEx.Net.Objects.Sockets.Subscriptions.Orders;
using CoinEx.Net.ExtensionMethods;
using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Converters.MessageParsing;
using CryptoExchange.Net.Clients;
using CoinEx.Net.Interfaces.Clients.SpotApiV1;

namespace CoinEx.Net.Clients.SpotApi
namespace CoinEx.Net.Clients.SpotApiV1
{
/// <inheritdoc cref="ICoinExSocketClientSpotApiV1" />
public class CoinExSocketClientSpotApiV1 : SocketApiClient, ICoinExSocketClientSpotApiV1
/// <inheritdoc cref="ICoinExSocketClientSpotApi" />
public class CoinExSocketClientSpotApi : SocketApiClient, ICoinExSocketClientSpotApi
{
#region fields
/// <inheritdoc />
@@ -49,7 +47,7 @@ public class CoinExSocketClientSpotApiV1 : SocketApiClient, ICoinExSocketClientS
/// <summary>
/// Create a new instance of CoinExSocketClient with default options
/// </summary>
internal CoinExSocketClientSpotApiV1(ILogger logger, CoinExSocketOptions options)
internal CoinExSocketClientSpotApi(ILogger logger, CoinExSocketOptions options)
: base(logger, options.Environment.SocketBaseAddress, options, options.SpotOptions)
{
RegisterPeriodicQuery("Ping", TimeSpan.FromMinutes(1), q => (new CoinExQuery<string>("server.ping", new object[] { })), null);
Original file line number Diff line number Diff line change
@@ -1,32 +1,27 @@
using CryptoExchange.Net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using CryptoExchange.Net.Objects;
using CryptoExchange.Net.Authentication;
using CoinEx.Net.Enums;
using CoinEx.Net.Objects.Internal;
using CoinEx.Net.Objects.Models;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CryptoExchange.Net.CommonObjects;
using System.Globalization;
using CryptoExchange.Net.Interfaces.CommonClients;
using Newtonsoft.Json.Linq;
using Microsoft.Extensions.Logging;
using CoinEx.Net.Objects.Options;
using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Converters.MessageParsing;
using CryptoExchange.Net.Clients;
using CryptoExchange.Net.Converters.SystemTextJson;
using CoinEx.Net.Objects.Models.V2;
using CoinEx.Net.Interfaces.Clients.SpotApiV2;

namespace CoinEx.Net.Clients.SpotApi
namespace CoinEx.Net.Clients.SpotApiV2
{
/// <inheritdoc cref="ICoinExClientSpotApiV1" />
public class CoinExRestClientSpotApi : RestApiClient, ICoinExClientSpotApi//, ISpotClient
/// <inheritdoc cref="ICoinExRestClientSpotApi" />
public class CoinExRestClientSpotApi : RestApiClient, ICoinExRestClientSpotApi//, ISpotClient
{
#region fields
/// <inheritdoc />
@@ -47,11 +42,11 @@ public class CoinExRestClientSpotApi : RestApiClient, ICoinExClientSpotApi//, IS

#region Api clients
/// <inheritdoc />
public ICoinExClientSpotApiAccount Account { get; }
public ICoinExRestClientSpotApiAccount Account { get; }
/// <inheritdoc />
public ICoinExClientSpotApiExchangeData ExchangeData { get; }
public ICoinExRestClientSpotApiExchangeData ExchangeData { get; }
/// <inheritdoc />
public ICoinExClientSpotApiTrading Trading { get; }
public ICoinExRestClientSpotApiTrading Trading { get; }
#endregion

internal readonly string _brokerId;
Original file line number Diff line number Diff line change
@@ -7,14 +7,14 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CoinEx.Net.ExtensionMethods;
using CoinEx.Net.Objects.Models.V2;
using CoinEx.Net.Interfaces.Clients.SpotApiV2;

namespace CoinEx.Net.Clients.SpotApi
namespace CoinEx.Net.Clients.SpotApiV2
{
/// <inheritdoc />
public class CoinExRestClientSpotApiAccount : ICoinExClientSpotApiAccount
public class CoinExRestClientSpotApiAccount : ICoinExRestClientSpotApiAccount
{
private readonly CoinExRestClientSpotApi _baseClient;

Original file line number Diff line number Diff line change
@@ -4,13 +4,13 @@
using System.Threading;
using System.Threading.Tasks;
using CoinEx.Net.Objects.Models.V2;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CoinEx.Net.Enums;
using CoinEx.Net.Interfaces.Clients.SpotApiV2;

namespace CoinEx.Net.Clients.SpotApi
namespace CoinEx.Net.Clients.SpotApiV2
{
/// <inheritdoc />
public class CoinExRestClientSpotApiExchangeData : ICoinExClientSpotApiExchangeData
public class CoinExRestClientSpotApiExchangeData : ICoinExRestClientSpotApiExchangeData
{
private readonly CoinExRestClientSpotApi _baseClient;

Original file line number Diff line number Diff line change
@@ -4,14 +4,14 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using CoinEx.Net.Interfaces.Clients.SpotApi;
using CoinEx.Net.Objects.Models.V2;
using System;
using CoinEx.Net.Interfaces.Clients.SpotApiV2;

namespace CoinEx.Net.Clients.SpotApi
namespace CoinEx.Net.Clients.SpotApiV2
{
/// <inheritdoc />
public class CoinExRestClientSpotApiTrading : ICoinExClientSpotApiTrading
public class CoinExRestClientSpotApiTrading : ICoinExRestClientSpotApiTrading
{
private readonly CoinExRestClientSpotApi _baseClient;

Loading