1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-06-09 08:56:13 +00:00
This commit is contained in:
JKorf 2023-10-29 21:28:46 +01:00
parent 9f92d86855
commit ad3959a8e9

View File

@ -10,7 +10,8 @@ namespace CryptoExchange.Net.Converters
{ {
public abstract class SocketConverter public abstract class SocketConverter
{ {
public abstract string[] IdFields { get; } public virtual string[]? SubscriptionIdFields => null;
public abstract string[] TypeIdFields { get; }
public abstract Type? GetDeserializationType(Dictionary<string, string> idValues, List<MessageListener> listeners); public abstract Type? GetDeserializationType(Dictionary<string, string> idValues, List<MessageListener> listeners);
@ -33,23 +34,43 @@ namespace CryptoExchange.Net.Converters
return null; return null;
} }
var dict = new Dictionary<string, string>(); var typeIdDict = new Dictionary<string, string>();
foreach(var idField in IdFields) foreach(var idField in TypeIdFields)
{ {
var splitTokens = idField.Split(new char[] { ':' }); var splitTokens = idField.Split(new char[] { ':' });
var accessToken = token; var accessToken = token;
foreach (var splitToken in splitTokens) foreach (var splitToken in splitTokens)
{ {
accessToken = accessToken[splitToken]; accessToken = accessToken[splitToken];
if (accessToken == null)
break;
} }
dict[idField] = accessToken?.ToString(); typeIdDict[idField] = accessToken?.ToString();
} }
var resultType = GetDeserializationType(dict, listeners);
string idString = ""; string idString = "";
foreach(var item in dict) if (SubscriptionIdFields != null)
{
foreach (var idField in SubscriptionIdFields)
{
var splitTokens = idField.Split(new char[] { ':' });
var accessToken = token;
foreach (var splitToken in splitTokens)
{
accessToken = accessToken[splitToken];
if (accessToken == null)
break;
}
idString += accessToken?.ToString();
}
}
else
{
foreach (var item in typeIdDict)
idString += item.Value; idString += item.Value;
}
var resultType = GetDeserializationType(typeIdDict, listeners);
return new ParsedMessage return new ParsedMessage
{ {
Identifier = idString, Identifier = idString,