mirror of
				https://github.com/JKorf/CryptoExchange.Net
				synced 2025-10-31 02:17:45 +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,17 +106,16 @@ 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 | ||||||
|         /// </summary> |         /// </summary> | ||||||
| @ -350,9 +359,25 @@ namespace CryptoExchange.Net | |||||||
|             foreach (var parameter in parameters) |             foreach (var parameter in parameters) | ||||||
|             { |             { | ||||||
|                 if (parameter.Value.GetType().IsArray) |                 if (parameter.Value.GetType().IsArray) | ||||||
|  |                 { | ||||||
|  |                     if (arraySerialization == ArrayParametersSerialization.JsonArray) | ||||||
|  |                     { | ||||||
|  |                         httpValueCollection.Add(parameter.Key, $"[{string.Join(",", (object[])parameter.Value)}]"); | ||||||
|  |                     } | ||||||
|  |                     else | ||||||
|                     { |                     { | ||||||
|                         foreach (var item in (object[])parameter.Value) |                         foreach (var item in (object[])parameter.Value) | ||||||
|                         httpValueCollection.Add(arraySerialization == ArrayParametersSerialization.Array ? parameter.Key + "[]" : parameter.Key, item.ToString()); |                         { | ||||||
|  |                             if (arraySerialization == ArrayParametersSerialization.Array) | ||||||
|  |                             { | ||||||
|  |                                 httpValueCollection.Add(parameter.Key + "[]", item.ToString()); | ||||||
|  |                             } | ||||||
|  |                             else | ||||||
|  |                             { | ||||||
|  |                                 httpValueCollection.Add(parameter.Key, item.ToString()); | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|                 } |                 } | ||||||
|                 else |                 else | ||||||
|                 { |                 { | ||||||
| @ -381,9 +406,25 @@ namespace CryptoExchange.Net | |||||||
|             foreach (var parameter in parameters) |             foreach (var parameter in parameters) | ||||||
|             { |             { | ||||||
|                 if (parameter.Value.GetType().IsArray) |                 if (parameter.Value.GetType().IsArray) | ||||||
|  |                 { | ||||||
|  |                     if (arraySerialization == ArrayParametersSerialization.JsonArray) | ||||||
|  |                     { | ||||||
|  |                         httpValueCollection.Add(parameter.Key, $"[{string.Join(",", (object[])parameter.Value)}]"); | ||||||
|  |                     } | ||||||
|  |                     else | ||||||
|                     { |                     { | ||||||
|                         foreach (var item in (object[])parameter.Value) |                         foreach (var item in (object[])parameter.Value) | ||||||
|                         httpValueCollection.Add(arraySerialization == ArrayParametersSerialization.Array ? parameter.Key + "[]" : parameter.Key, item.ToString()); |                         { | ||||||
|  |                             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