mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-07 16:06:15 +00:00
Some small improvements and fixes
This commit is contained in:
parent
de72fe4fb9
commit
8ddd9ecf22
@ -92,9 +92,10 @@ namespace CryptoExchange.Net.Converters.SystemTextJson
|
|||||||
{
|
{
|
||||||
JsonTokenType.String => reader.GetString(),
|
JsonTokenType.String => reader.GetString(),
|
||||||
JsonTokenType.Number => reader.GetInt16().ToString(),
|
JsonTokenType.Number => reader.GetInt16().ToString(),
|
||||||
JsonTokenType.True => "true",
|
JsonTokenType.True => reader.GetBoolean().ToString(),
|
||||||
JsonTokenType.False => "false",
|
JsonTokenType.False => reader.GetBoolean().ToString(),
|
||||||
_ => null
|
JsonTokenType.Null => null,
|
||||||
|
_ => throw new Exception("Invalid token type for enum deserialization: " + reader.TokenType)
|
||||||
};
|
};
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(stringValue))
|
if (string.IsNullOrEmpty(stringValue))
|
||||||
|
@ -10,6 +10,11 @@ using System.Text;
|
|||||||
using System.Web;
|
using System.Web;
|
||||||
using CryptoExchange.Net.Objects;
|
using CryptoExchange.Net.Objects;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Data.Common;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
namespace CryptoExchange.Net
|
namespace CryptoExchange.Net
|
||||||
{
|
{
|
||||||
@ -59,7 +64,7 @@ namespace CryptoExchange.Net
|
|||||||
/// <param name="urlEncodeValues">Whether or not the values should be url encoded</param>
|
/// <param name="urlEncodeValues">Whether or not the values should be url encoded</param>
|
||||||
/// <param name="serializationType">How to serialize array parameters</param>
|
/// <param name="serializationType">How to serialize array parameters</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string CreateParamString(this Dictionary<string, object> parameters, bool urlEncodeValues, ArrayParametersSerialization serializationType)
|
public static string CreateParamString(this IDictionary<string, object> parameters, bool urlEncodeValues, ArrayParametersSerialization serializationType)
|
||||||
{
|
{
|
||||||
var uriString = string.Empty;
|
var uriString = string.Empty;
|
||||||
var arraysParameters = parameters.Where(p => p.Value.GetType().IsArray).ToList();
|
var arraysParameters = parameters.Where(p => p.Value.GetType().IsArray).ToList();
|
||||||
@ -67,17 +72,22 @@ namespace CryptoExchange.Net
|
|||||||
{
|
{
|
||||||
if (serializationType == ArrayParametersSerialization.Array)
|
if (serializationType == ArrayParametersSerialization.Array)
|
||||||
{
|
{
|
||||||
uriString += $"{string.Join("&", ((object[])(urlEncodeValues ? Uri.EscapeDataString(arrayEntry.Value.ToString()) : arrayEntry.Value)).Select(v => $"{arrayEntry.Key}[]={v}"))}&";
|
uriString += $"{string.Join("&", ((object[])(urlEncodeValues ? Uri.EscapeDataString(arrayEntry.Value.ToString()) : arrayEntry.Value)).Select(v => $"{arrayEntry.Key}[]={string.Format(CultureInfo.InvariantCulture, "{0}", v)}"))}&";
|
||||||
|
}
|
||||||
|
else if (serializationType == ArrayParametersSerialization.MultipleValues)
|
||||||
|
{
|
||||||
|
var array = (Array)arrayEntry.Value;
|
||||||
|
uriString += string.Join("&", array.OfType<object>().Select(a => $"{arrayEntry.Key}={Uri.EscapeDataString(string.Format(CultureInfo.InvariantCulture, "{0}", a))}"));
|
||||||
|
uriString += "&";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var array = (Array)arrayEntry.Value;
|
var array = (Array)arrayEntry.Value;
|
||||||
uriString += string.Join("&", array.OfType<object>().Select(a => $"{arrayEntry.Key}={Uri.EscapeDataString(a.ToString())}"));
|
uriString += $"{arrayEntry.Key}=[{string.Join(",", array.OfType<object>().Select(a => string.Format(CultureInfo.InvariantCulture, "{0}", a)))}]&";
|
||||||
uriString += "&";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uriString += $"{string.Join("&", parameters.Where(p => !p.Value.GetType().IsArray).Select(s => $"{s.Key}={(urlEncodeValues ? Uri.EscapeDataString(s.Value.ToString()) : s.Value)}"))}";
|
uriString += $"{string.Join("&", parameters.Where(p => !p.Value.GetType().IsArray).Select(s => $"{s.Key}={(urlEncodeValues ? Uri.EscapeDataString(string.Format(CultureInfo.InvariantCulture, "{0}", s.Value)) : string.Format(CultureInfo.InvariantCulture, "{0}", s.Value))}"))}";
|
||||||
uriString = uriString.TrimEnd('&');
|
uriString = uriString.TrimEnd('&');
|
||||||
return uriString;
|
return uriString;
|
||||||
}
|
}
|
||||||
@ -87,7 +97,7 @@ namespace CryptoExchange.Net
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="parameters"></param>
|
/// <param name="parameters"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string ToFormData(this SortedDictionary<string, object> parameters)
|
public static string ToFormData(this IDictionary<string, object> parameters)
|
||||||
{
|
{
|
||||||
var formData = HttpUtility.ParseQueryString(string.Empty);
|
var formData = HttpUtility.ParseQueryString(string.Empty);
|
||||||
foreach (var kvp in parameters)
|
foreach (var kvp in parameters)
|
||||||
@ -96,16 +106,15 @@ namespace CryptoExchange.Net
|
|||||||
{
|
{
|
||||||
var array = (Array)kvp.Value;
|
var array = (Array)kvp.Value;
|
||||||
foreach (var value in array)
|
foreach (var value in array)
|
||||||
formData.Add(kvp.Key, value.ToString());
|
formData.Add(kvp.Key, string.Format(CultureInfo.InvariantCulture, "{0}", value));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
formData.Add(kvp.Key, kvp.Value.ToString());
|
formData.Add(kvp.Key, string.Format(CultureInfo.InvariantCulture, "{0}", kvp.Value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return formData.ToString();
|
return formData.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get the string the secure string is representing
|
/// Get the string the secure string is representing
|
||||||
@ -349,10 +358,26 @@ namespace CryptoExchange.Net
|
|||||||
var httpValueCollection = HttpUtility.ParseQueryString(string.Empty);
|
var httpValueCollection = HttpUtility.ParseQueryString(string.Empty);
|
||||||
foreach (var parameter in parameters)
|
foreach (var parameter in parameters)
|
||||||
{
|
{
|
||||||
if(parameter.Value.GetType().IsArray)
|
if (parameter.Value.GetType().IsArray)
|
||||||
{
|
{
|
||||||
foreach (var item in (object[])parameter.Value)
|
if (arraySerialization == ArrayParametersSerialization.JsonArray)
|
||||||
httpValueCollection.Add(arraySerialization == ArrayParametersSerialization.Array ? parameter.Key + "[]" : parameter.Key, item.ToString());
|
{
|
||||||
|
httpValueCollection.Add(parameter.Key, $"[{string.Join(",", (object[])parameter.Value)}]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var item in (object[])parameter.Value)
|
||||||
|
{
|
||||||
|
if (arraySerialization == ArrayParametersSerialization.Array)
|
||||||
|
{
|
||||||
|
httpValueCollection.Add(parameter.Key + "[]", item.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
httpValueCollection.Add(parameter.Key, item.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -382,8 +407,24 @@ namespace CryptoExchange.Net
|
|||||||
{
|
{
|
||||||
if (parameter.Value.GetType().IsArray)
|
if (parameter.Value.GetType().IsArray)
|
||||||
{
|
{
|
||||||
foreach (var item in (object[])parameter.Value)
|
if (arraySerialization == ArrayParametersSerialization.JsonArray)
|
||||||
httpValueCollection.Add(arraySerialization == ArrayParametersSerialization.Array ? parameter.Key + "[]" : parameter.Key, item.ToString());
|
{
|
||||||
|
httpValueCollection.Add(parameter.Key, $"[{string.Join(",", (object[])parameter.Value)}]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var item in (object[])parameter.Value)
|
||||||
|
{
|
||||||
|
if (arraySerialization == ArrayParametersSerialization.Array)
|
||||||
|
{
|
||||||
|
httpValueCollection.Add(parameter.Key + "[]", item.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
httpValueCollection.Add(parameter.Key, item.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -12,9 +12,14 @@ namespace CryptoExchange.Net.Interfaces
|
|||||||
public interface ISymbolOrderBook
|
public interface ISymbolOrderBook
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Identifier
|
/// The exchange the book is for
|
||||||
/// </summary>
|
/// </summary>
|
||||||
string Id { get; }
|
string Exchange { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The Api the book is for
|
||||||
|
/// </summary>
|
||||||
|
string Api { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The status of the order book. Order book is up to date when the status is `Synced`
|
/// The status of the order book. Order book is up to date when the status is `Synced`
|
||||||
|
@ -99,15 +99,22 @@
|
|||||||
/// Define how array parameters should be send
|
/// Define how array parameters should be send
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public enum ArrayParametersSerialization
|
public enum ArrayParametersSerialization
|
||||||
|
#pragma warning disable CS1570 // XML comment has badly formed XML
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Send multiple key=value for each entry
|
/// Send as key=value1&key=value2
|
||||||
/// </summary>
|
/// </summary>
|
||||||
MultipleValues,
|
MultipleValues,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create an []=value array
|
/// Send as key[]=value1&key[]=value2
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Array
|
Array,
|
||||||
|
/// <summary>
|
||||||
|
/// Send as key=[value1, value2]
|
||||||
|
/// </summary>
|
||||||
|
JsonArray
|
||||||
|
#pragma warning restore CS1570 // XML comment has badly formed XML
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user