Skip to content

Commit a01aa7a

Browse files
committed
1 parent 8b9c40f commit a01aa7a

File tree

3 files changed

+26
-17
lines changed

3 files changed

+26
-17
lines changed

src/JsonApiDotNetCore/Controllers/Annotations/DisableQueryStringAttribute.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public DisableQueryStringAttribute(string parameterNames)
5353

5454
public bool ContainsParameter(JsonApiQueryStringParameters parameter)
5555
{
56-
string name = parameter.ToString();
56+
string name = parameter.ToString(); // TODO: avoid allocation
5757
return ParameterNames.Contains(name);
5858
}
5959
}

src/JsonApiDotNetCore/QueryStrings/FilterQueryStringParameterReader.cs

+16-14
Original file line numberDiff line numberDiff line change
@@ -59,30 +59,32 @@ public virtual bool CanRead(string parameterName)
5959
/// <inheritdoc />
6060
public virtual void Read(string parameterName, StringValues parameterValue)
6161
{
62-
foreach (string value in parameterValue.SelectMany(ExtractParameterValue))
62+
foreach (string? value in parameterValue)
6363
{
64-
ReadSingleValue(parameterName, value);
65-
}
66-
}
64+
if (value == null)
65+
{
66+
continue;
67+
}
6768

68-
private IEnumerable<string> ExtractParameterValue(string? parameterValue)
69-
{
70-
if (parameterValue != null)
71-
{
72-
if (_options.EnableLegacyFilterNotation)
69+
if (!_options.EnableLegacyFilterNotation)
7370
{
74-
foreach (string condition in LegacyConverter.ExtractConditions(parameterValue))
75-
{
76-
yield return condition;
77-
}
71+
ReadSingleValue(parameterName, value);
7872
}
7973
else
8074
{
81-
yield return parameterValue;
75+
ReadLegacyValues(parameterName, value);
8276
}
8377
}
8478
}
8579

80+
private void ReadLegacyValues(string parameterName, string parameterValue)
81+
{
82+
foreach (string condition in LegacyConverter.ExtractConditions(parameterValue))
83+
{
84+
ReadSingleValue(parameterName, condition);
85+
}
86+
}
87+
8688
private void ReadSingleValue(string parameterName, string parameterValue)
8789
{
8890
bool parameterNameIsValid = false;

src/JsonApiDotNetCore/QueryStrings/QueryStringReader.cs

+9-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ public void ReadAll(DisableQueryStringAttribute? disableQueryStringAttribute)
4242

4343
if (reader != null)
4444
{
45-
_logger.LogDebug($"Query string parameter '{parameterName}' with value '{parameterValue}' was accepted by {reader.GetType().Name}.");
45+
if (_logger.IsEnabled(LogLevel.Debug))
46+
{
47+
_logger.LogDebug($"Query string parameter '{parameterName}' with value '{parameterValue}' was accepted by {reader.GetType().Name}.");
48+
}
4649

4750
if (!reader.AllowEmptyValue && string.IsNullOrEmpty(parameterValue))
4851
{
@@ -58,7 +61,11 @@ public void ReadAll(DisableQueryStringAttribute? disableQueryStringAttribute)
5861
}
5962

6063
reader.Read(parameterName, parameterValue);
61-
_logger.LogDebug($"Query string parameter '{parameterName}' was successfully read.");
64+
65+
if (_logger.IsEnabled(LogLevel.Debug))
66+
{
67+
_logger.LogDebug($"Query string parameter '{parameterName}' was successfully read.");
68+
}
6269
}
6370
else if (!_options.AllowUnknownQueryStringParameters)
6471
{

0 commit comments

Comments
 (0)