From 3a7ac88c53aab7a23fe46336a4d0fe31a331f852 Mon Sep 17 00:00:00 2001 From: JKorf Date: Thu, 20 Nov 2025 21:18:13 +0100 Subject: [PATCH] wip --- .../MessageConverterTypes.cs | 2 +- .../SystemTextJson/DateTimeConverter.cs | 6 ++-- .../MessageConverters/DynamicJsonConverter.cs | 34 +++++++++---------- .../Objects/AssetAliasConfiguration.cs | 5 +-- .../RateLimiting/Filters/HostFilter.cs | 2 +- .../SharedApis/Models/ExchangeParameters.cs | 13 +++---- .../Testing/Implementations/TestSocket.cs | 2 +- 7 files changed, 32 insertions(+), 32 deletions(-) diff --git a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs index 60b42f5..931b986 100644 --- a/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs +++ b/CryptoExchange.Net/Converters/MessageParsing/DynamicConverters/MessageConverterTypes.cs @@ -84,7 +84,7 @@ namespace CryptoExchange.Net.Converters.MessageParsing.DynamicConverters { foreach(var item in _items) { - if (item.Field.SearchName == searchName) + if (item.Field.SearchName.Equals(searchName, StringComparison.Ordinal)) return item.Value; } diff --git a/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs index b1e7b13..09e7ed6 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/DateTimeConverter.cs @@ -86,8 +86,8 @@ namespace CryptoExchange.Net.Converters.SystemTextJson { var stringValue = reader.GetString(); if (string.IsNullOrWhiteSpace(stringValue) - || stringValue == "-1" - || stringValue == "0001-01-01T00:00:00Z" + || stringValue!.Equals("-1", StringComparison.Ordinal) + || stringValue!.Equals("0001-01-01T00:00:00Z", StringComparison.OrdinalIgnoreCase) || decimal.TryParse(stringValue, out var decVal) && decVal == 0) { return default; @@ -127,7 +127,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson /// public static DateTime ParseFromString(string stringValue, string? resolverName) { - if (stringValue!.Length == 12 && stringValue.StartsWith("202")) + if (stringValue!.Length == 12 && stringValue.StartsWith("202", StringComparison.OrdinalIgnoreCase)) { // Parse 202303261200 format if (!int.TryParse(stringValue.Substring(0, 4), out var year) diff --git a/CryptoExchange.Net/Converters/SystemTextJson/MessageConverters/DynamicJsonConverter.cs b/CryptoExchange.Net/Converters/SystemTextJson/MessageConverters/DynamicJsonConverter.cs index 2cb1c53..6e52986 100644 --- a/CryptoExchange.Net/Converters/SystemTextJson/MessageConverters/DynamicJsonConverter.cs +++ b/CryptoExchange.Net/Converters/SystemTextJson/MessageConverters/DynamicJsonConverter.cs @@ -48,7 +48,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson if (field is PropertyFieldReference propRef && otherField is PropertyFieldReference otherPropRef) { - return field.Depth == otherPropRef.Depth && propRef.PropertyName == otherPropRef.PropertyName; + return field.Depth == otherPropRef.Depth && propRef.PropertyName.SequenceEqual(otherPropRef.PropertyName); } else if (field is ArrayFieldReference arrayRef && otherField is ArrayFieldReference otherArrayPropRef) @@ -62,11 +62,11 @@ namespace CryptoExchange.Net.Converters.SystemTextJson _overlappingFields = true; } - MessageEvalutorFieldReference? existing = null; + MessageEvalutorFieldReference? existingSameSearchField = null; if (field is ArrayFieldReference arrayField) { _hasArraySearches = true; - existing = _searchFields.SingleOrDefault(x => + existingSameSearchField = _searchFields.SingleOrDefault(x => x.Field is ArrayFieldReference arrayFieldRef && arrayFieldRef.ArrayIndex == arrayField.ArrayIndex && arrayFieldRef.Depth == arrayField.Depth @@ -74,39 +74,37 @@ namespace CryptoExchange.Net.Converters.SystemTextJson } else if (field is PropertyFieldReference propField) { - existing = _searchFields.SingleOrDefault(x => + existingSameSearchField = _searchFields.SingleOrDefault(x => x.Field is PropertyFieldReference propFieldRef - && propFieldRef.PropertyName == propField.PropertyName + && propFieldRef.PropertyName.SequenceEqual(propField.PropertyName) && propFieldRef.Depth == propField.Depth && (propFieldRef.Constraint == null && propFieldRef.Constraint == null)); } - if (existing != null) + if (existingSameSearchField != null) { - if (existing.SkipReading == true + if (existingSameSearchField.SkipReading == true && (evaluator.IdentifyMessageCallback != null || field.Constraint != null)) { - existing.SkipReading = false; + existingSameSearchField.SkipReading = false; } if (evaluator.ForceIfFound) { - if (evaluator.Fields.Length > 1 || existing.ForceEvaluator != null) + if (evaluator.Fields.Length > 1 || existingSameSearchField.ForceEvaluator != null) throw new Exception("Invalid config"); - existing.ForceEvaluator = evaluator; + existingSameSearchField.ForceEvaluator = evaluator; } } - else + + _searchFields.Add(new MessageEvalutorFieldReference { - _searchFields.Add(new MessageEvalutorFieldReference - { - SkipReading = evaluator.IdentifyMessageCallback == null && field.Constraint == null, - ForceEvaluator = evaluator.ForceIfFound ? evaluator : null, - Field = field - }); - } + SkipReading = evaluator.IdentifyMessageCallback == null && field.Constraint == null, + ForceEvaluator = evaluator.ForceIfFound ? evaluator : null, + Field = field + }); if (field.Depth > _maxSearchDepth) _maxSearchDepth = field.Depth; diff --git a/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs b/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs index 763b6ec..a50462b 100644 --- a/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs +++ b/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs @@ -23,7 +23,8 @@ namespace CryptoExchange.Net.Objects /// /// Map the common name to an exchange name for an asset. If there is no alias the input name is returned /// - public string CommonToExchangeName(string commonName) => !AutoConvertEnabled ? commonName : Aliases.FirstOrDefault(x => x.CommonAssetName == commonName)?.ExchangeAssetName ?? commonName; + public string CommonToExchangeName(string commonName) => + !AutoConvertEnabled ? commonName : Aliases.FirstOrDefault(x => x.CommonAssetName.Equals(commonName, StringComparison.InvariantCulture))?.ExchangeAssetName ?? commonName; /// /// Map the exchange name to a common name for an asset. If there is no alias the input name is returned @@ -33,7 +34,7 @@ namespace CryptoExchange.Net.Objects if (!AutoConvertEnabled) return exchangeName; - var alias = Aliases.FirstOrDefault(x => x.ExchangeAssetName == exchangeName); + var alias = Aliases.FirstOrDefault(x => x.ExchangeAssetName.Equals(exchangeName, StringComparison.InvariantCulture)); if (alias == null || alias.Type == AliasType.OnlyToExchange) return exchangeName; diff --git a/CryptoExchange.Net/RateLimiting/Filters/HostFilter.cs b/CryptoExchange.Net/RateLimiting/Filters/HostFilter.cs index 65b47df..4a6dc9f 100644 --- a/CryptoExchange.Net/RateLimiting/Filters/HostFilter.cs +++ b/CryptoExchange.Net/RateLimiting/Filters/HostFilter.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.RateLimiting.Filters /// public bool Passes(RateLimitItemType type, RequestDefinition definition, string host, string? apiKey) - => host == _host; + => host.Equals(_host, System.StringComparison.InvariantCulture); } } diff --git a/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs b/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs index 85f838b..968738f 100644 --- a/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs +++ b/CryptoExchange.Net/SharedApis/Models/ExchangeParameters.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Xml.Linq; namespace CryptoExchange.Net.SharedApis { @@ -39,8 +40,8 @@ namespace CryptoExchange.Net.SharedApis /// public bool HasValue(string exchange, string name, Type type) { - var val = _parameters.SingleOrDefault(x => x.Exchange == exchange && x.Name == name); - val ??= _staticParameters.SingleOrDefault(x => x.Exchange == exchange && x.Name == name); + var val = _parameters.SingleOrDefault(x => x.Exchange.Equals(exchange, StringComparison.InvariantCulture) && x.Name.Equals(name, StringComparison.InvariantCulture)); + val ??= _staticParameters.SingleOrDefault(x => x.Exchange.Equals(exchange, StringComparison.InvariantCulture) && x.Name.Equals(name, StringComparison.InvariantCulture)); if (val == null) return false; @@ -71,7 +72,7 @@ namespace CryptoExchange.Net.SharedApis if (provided == true) return true; - var val = _staticParameters.SingleOrDefault(x => x.Exchange == exchange && x.Name == name); + var val = _staticParameters.SingleOrDefault(x => x.Exchange.Equals(exchange, StringComparison.InvariantCulture) && x.Name.Equals(name, StringComparison.InvariantCulture)); if (val == null) return false; @@ -95,7 +96,7 @@ namespace CryptoExchange.Net.SharedApis /// Parameter name public T? GetValue(string exchange, string name) { - var val = _parameters.SingleOrDefault(x => x.Exchange == exchange && x.Name == name); + var val = _parameters.SingleOrDefault(x => x.Exchange.Equals(exchange, StringComparison.InvariantCulture) && x.Name.Equals(name, StringComparison.InvariantCulture)); if (val == null) return default; @@ -122,7 +123,7 @@ namespace CryptoExchange.Net.SharedApis T? value; if (exchangeParameters == null) { - var parameter = _staticParameters.SingleOrDefault(x => x.Exchange == exchange && x.Name == name); + var parameter = _staticParameters.SingleOrDefault(x => x.Exchange.Equals(exchange, StringComparison.InvariantCulture) && x.Name.Equals(name, StringComparison.InvariantCulture)); if (parameter == null) return default; @@ -155,7 +156,7 @@ namespace CryptoExchange.Net.SharedApis /// Parameter value public static void SetStaticParameter(string exchange, string key, object value) { - var existing = _staticParameters.SingleOrDefault(x => x.Exchange == exchange && x.Name == key); + var existing = _staticParameters.SingleOrDefault(x => x.Exchange.Equals(exchange, StringComparison.InvariantCulture) && x.Name.Equals(key, StringComparison.InvariantCulture)); if (existing != null) { existing.Value = value; diff --git a/CryptoExchange.Net/Testing/Implementations/TestSocket.cs b/CryptoExchange.Net/Testing/Implementations/TestSocket.cs index 7a66fae..3cb9dd4 100644 --- a/CryptoExchange.Net/Testing/Implementations/TestSocket.cs +++ b/CryptoExchange.Net/Testing/Implementations/TestSocket.cs @@ -121,7 +121,7 @@ namespace CryptoExchange.Net.Testing.Implementations } } - public Task ReconnectAsync() => throw new NotImplementedException(); + public Task ReconnectAsync() => Task.CompletedTask; public void Dispose() { } public void UpdateProxy(ApiProxy? proxy) => throw new NotImplementedException();