diff --git a/CryptoExchange.Net/Clients/BaseRestClient.cs b/CryptoExchange.Net/Clients/BaseRestClient.cs
index e112bea..513ea8c 100644
--- a/CryptoExchange.Net/Clients/BaseRestClient.cs
+++ b/CryptoExchange.Net/Clients/BaseRestClient.cs
@@ -341,7 +341,7 @@ namespace CryptoExchange.Net
}
// Add the auth parameters to the uri, start with a new URI to be able to sort the parameters including the auth parameters
- uri = uri.SetParameters(uriParameters);
+ uri = uri.SetParameters(uriParameters, arraySerialization);
var request = RequestFactory.Create(method, uri, requestId);
request.Accept = Constants.JsonContentHeader;
diff --git a/CryptoExchange.Net/ExtensionMethods.cs b/CryptoExchange.Net/ExtensionMethods.cs
index 6779087..8037ede 100644
--- a/CryptoExchange.Net/ExtensionMethods.cs
+++ b/CryptoExchange.Net/ExtensionMethods.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
@@ -419,8 +420,9 @@ namespace CryptoExchange.Net
///
///
///
+ ///
///
- public static Uri SetParameters(this Uri baseUri, SortedDictionary parameters)
+ public static Uri SetParameters(this Uri baseUri, SortedDictionary parameters, ArrayParametersSerialization arraySerialization)
{
var uriBuilder = new UriBuilder();
uriBuilder.Scheme = baseUri.Scheme;
@@ -428,7 +430,15 @@ namespace CryptoExchange.Net
uriBuilder.Path = baseUri.AbsolutePath;
var httpValueCollection = HttpUtility.ParseQueryString(string.Empty);
foreach (var parameter in parameters)
- httpValueCollection.Add(parameter.Key, parameter.Value.ToString());
+ {
+ if(parameter.Value.GetType().IsArray)
+ {
+ foreach (var item in (object[])parameter.Value)
+ httpValueCollection.Add(arraySerialization == ArrayParametersSerialization.Array ? parameter.Key + "[]" : parameter.Key, item.ToString());
+ }
+ else
+ httpValueCollection.Add(parameter.Key, parameter.Value.ToString());
+ }
uriBuilder.Query = httpValueCollection.ToString();
return uriBuilder.Uri;
}
@@ -438,8 +448,9 @@ namespace CryptoExchange.Net
///
///
///
+ ///
///
- public static Uri SetParameters(this Uri baseUri, IOrderedEnumerable> parameters)
+ public static Uri SetParameters(this Uri baseUri, IOrderedEnumerable> parameters, ArrayParametersSerialization arraySerialization)
{
var uriBuilder = new UriBuilder();
uriBuilder.Scheme = baseUri.Scheme;
@@ -447,7 +458,15 @@ namespace CryptoExchange.Net
uriBuilder.Path = baseUri.AbsolutePath;
var httpValueCollection = HttpUtility.ParseQueryString(string.Empty);
foreach (var parameter in parameters)
- httpValueCollection.Add(parameter.Key, parameter.Value.ToString());
+ {
+ if (parameter.Value.GetType().IsArray)
+ {
+ foreach (var item in (object[])parameter.Value)
+ httpValueCollection.Add(arraySerialization == ArrayParametersSerialization.Array ? parameter.Key + "[]" : parameter.Key, item.ToString());
+ }
+ else
+ httpValueCollection.Add(parameter.Key, parameter.Value.ToString());
+ }
uriBuilder.Query = httpValueCollection.ToString();
return uriBuilder.Uri;
}