mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2026-02-16 14:13:46 +00:00
Added some util methods, Added CommaSplitStringConverter
This commit is contained in:
parent
550c0eabf1
commit
c71a81e686
@ -0,0 +1,30 @@
|
|||||||
|
using System;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.Converters.SystemTextJson
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Converter for comma separated string values
|
||||||
|
/// </summary>
|
||||||
|
public class CommaSplitStringConverter : JsonConverter<string[]>
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override string[]? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
var str = reader.GetString();
|
||||||
|
if (string.IsNullOrEmpty(str))
|
||||||
|
return [];
|
||||||
|
|
||||||
|
return str!.Split(',').ToArray() ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void Write(Utf8JsonWriter writer, string[] value, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
writer.WriteStringValue(string.Join(",", value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -74,8 +74,13 @@ namespace CryptoExchange.Net
|
|||||||
{
|
{
|
||||||
if (serializationType == ArrayParametersSerialization.Array)
|
if (serializationType == ArrayParametersSerialization.Array)
|
||||||
{
|
{
|
||||||
foreach(var entry in (object[])parameter.Value)
|
bool firstArrayValue = true;
|
||||||
|
foreach (var entry in (object[])parameter.Value)
|
||||||
{
|
{
|
||||||
|
if (!firstArrayValue)
|
||||||
|
uriString.Append('&');
|
||||||
|
firstArrayValue = false;
|
||||||
|
|
||||||
uriString.Append(parameter.Key);
|
uriString.Append(parameter.Key);
|
||||||
uriString.Append("[]=");
|
uriString.Append("[]=");
|
||||||
if (urlEncodeValues)
|
if (urlEncodeValues)
|
||||||
@ -611,6 +616,26 @@ namespace CryptoExchange.Net
|
|||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert a hex encoded string to byte array
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="hexString"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static byte[] HexStringToBytes(this string hexString)
|
||||||
|
{
|
||||||
|
if (hexString.StartsWith("0x"))
|
||||||
|
hexString = hexString.Substring(2);
|
||||||
|
|
||||||
|
byte[] bytes = new byte[hexString.Length / 2];
|
||||||
|
for (int i = 0; i < hexString.Length; i += 2)
|
||||||
|
{
|
||||||
|
string hexSubstring = hexString.Substring(i, 2);
|
||||||
|
bytes[i / 2] = Convert.ToByte(hexSubstring, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -96,6 +96,23 @@ namespace CryptoExchange.Net.Objects
|
|||||||
base.Add(key, value.Value.ToString(CultureInfo.InvariantCulture));
|
base.Add(key, value.Value.ToString(CultureInfo.InvariantCulture));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add a DateTime value as string
|
||||||
|
/// </summary>
|
||||||
|
public void AddString(string key, DateTime value)
|
||||||
|
{
|
||||||
|
base.Add(key, value.ToString("yyyy-MM-ddTHH:mm:ssZ"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add a DateTime value as string. Not added if value is null
|
||||||
|
/// </summary>
|
||||||
|
public void AddOptionalString(string key, DateTime? value)
|
||||||
|
{
|
||||||
|
if (value != null)
|
||||||
|
base.Add(key, value.Value.ToString("yyyy-MM-ddTHH:mm:ssZ"));
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add a datetime value as milliseconds timestamp
|
/// Add a datetime value as milliseconds timestamp
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -242,6 +259,45 @@ namespace CryptoExchange.Net.Objects
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add key as comma separated values
|
||||||
|
/// </summary>
|
||||||
|
public void AddCommaSeparated(string key, IEnumerable<string> values)
|
||||||
|
{
|
||||||
|
base.Add(key, string.Join(",", values));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add key as comma separated values if there are values provided
|
||||||
|
/// </summary>
|
||||||
|
public void AddOptionalCommaSeparated(string key, IEnumerable<string>? values)
|
||||||
|
{
|
||||||
|
if (values == null || !values.Any())
|
||||||
|
return;
|
||||||
|
|
||||||
|
base.Add(key, string.Join(",", values));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add key as boolean lower case value
|
||||||
|
/// </summary>
|
||||||
|
public void AddBoolString(string key, bool value)
|
||||||
|
{
|
||||||
|
base.Add(key, value.ToString().ToLower());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add key as boolean lower case value if it's not null
|
||||||
|
/// </summary>
|
||||||
|
public void AddOptionalBoolString(string key, bool? value)
|
||||||
|
{
|
||||||
|
if (value == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
base.Add(key, value.ToString()!.ToLower());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Set the request body. Can be used to specify a simple value or array as the body instead of an object
|
/// Set the request body. Can be used to specify a simple value or array as the body instead of an object
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user