Skip to content

Commit d6fa351

Browse files
Unify HTTP token parsing code (#46580)
1 parent 569f658 commit d6fa351

10 files changed

+36
-309
lines changed

src/Http/Headers/src/Microsoft.Net.Http.Headers.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
<ItemGroup>
1515
<Reference Include="Microsoft.Extensions.Primitives" />
1616
<Compile Include="..\..\Shared\CookieHeaderParserShared.cs" Link="CookieHeaderParserShared.cs" />
17-
<Compile Include="..\..\Shared\HttpRuleParser.cs" />
18-
<Compile Include="..\..\Shared\HttpParseResult.cs" />
17+
<Compile Include="$(SharedSourceRoot)HttpRuleParser.cs" />
18+
<Compile Include="$(SharedSourceRoot)HttpParseResult.cs" />
1919
</ItemGroup>
2020

2121
<ItemGroup>

src/Http/Http/src/Microsoft.AspNetCore.Http.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup>
15-
<Compile Include="$(SharedSourceRoot)CopyOnWriteDictionary\*.cs" />
16-
<Compile Include="$(SharedSourceRoot)ValueTaskExtensions\**\*.cs" />
15+
<Compile Include="$(SharedSourceRoot)CopyOnWriteDictionary\*.cs" LinkBase="Shared"/>
16+
<Compile Include="$(SharedSourceRoot)ValueTaskExtensions\**\*.cs" LinkBase="Shared"/>
1717
<Compile Include="..\..\Shared\StreamCopyOperationInternal.cs" Link="Internal\StreamCopyOperationInternal.cs" />
1818
<Compile Include="..\..\Shared\CookieHeaderParserShared.cs" Link="Internal\CookieHeaderParserShared.cs" />
19-
<Compile Include="..\..\Shared\HttpRuleParser.cs" LinkBase="Internal" />
20-
<Compile Include="..\..\Shared\HttpParseResult.cs" LinkBase="Internal" />
19+
<Compile Include="$(SharedSourceRoot)HttpRuleParser.cs" LinkBase="Shared" />
20+
<Compile Include="$(SharedSourceRoot)HttpParseResult.cs" LinkBase="Shared" />
2121
<Compile Include="..\..\WebUtilities\src\AspNetCoreTempDirectory.cs" LinkBase="Internal" />
2222
<Compile Include="..\..\..\Shared\Dictionary\AdaptiveCapacityDictionary.cs" LinkBase="Internal" />
2323
</ItemGroup>

src/Http/Routing/src/Microsoft.AspNetCore.Routing.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,13 @@
2828
<Compile Include="$(SharedSourceRoot)PropertyHelper\*.cs" />
2929
<Compile Include="$(SharedSourceRoot)RoslynUtils\TypeHelper.cs" />
3030
<Compile Include="$(SharedSourceRoot)MediaType\ReadOnlyMediaTypeHeaderValue.cs" LinkBase="Shared" />
31-
<Compile Include="$(SharedSourceRoot)MediaType\HttpTokenParsingRule.cs" LinkBase="Shared" />
3231
<Compile Include="$(SharedSourceRoot)ApiExplorerTypes\*.cs" LinkBase="Shared" />
3332
<Compile Include="$(SharedSourceRoot)RoutingMetadata\AcceptsMetadata.cs" LinkBase="Shared" />
3433
<Compile Include="$(SharedSourceRoot)Json\JsonSerializerExtensions.cs" LinkBase="Shared"/>
3534
<Compile Include="$(SharedSourceRoot)RouteHandlers\ExecuteHandlerHelper.cs" LinkBase="Shared"/>
3635
<Compile Include="$(SharedSourceRoot)RouteValueDictionaryTrimmerWarning.cs" LinkBase="Shared" />
36+
<Compile Include="$(SharedSourceRoot)HttpRuleParser.cs" LinkBase="Shared" />
37+
<Compile Include="$(SharedSourceRoot)HttpParseResult.cs" LinkBase="Shared" />
3738
</ItemGroup>
3839

3940
<ItemGroup>

src/Mvc/Mvc.Core/src/Formatters/AcceptHeaderParser.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System.Diagnostics;
5-
using Microsoft.AspNetCore.Http.Headers;
5+
using Microsoft.Net.Http.Headers;
66

77
namespace Microsoft.AspNetCore.Mvc.Formatters;
88

@@ -125,7 +125,7 @@ private static int GetNextNonEmptyOrWhitespaceIndex(
125125
Debug.Assert(startIndex <= input.Length); // it's OK if index == value.Length.
126126

127127
separatorFound = false;
128-
var current = startIndex + HttpTokenParsingRules.GetWhitespaceLength(input, startIndex);
128+
var current = startIndex + HttpRuleParser.GetWhitespaceLength(input, startIndex);
129129

130130
if ((current == input.Length) || (input[current] != ','))
131131
{
@@ -136,12 +136,12 @@ private static int GetNextNonEmptyOrWhitespaceIndex(
136136
// continue until the current character is neither a separator nor a whitespace.
137137
separatorFound = true;
138138
current++; // skip delimiter.
139-
current = current + HttpTokenParsingRules.GetWhitespaceLength(input, current);
139+
current = current + HttpRuleParser.GetWhitespaceLength(input, current);
140140

141141
while ((current < input.Length) && (input[current] == ','))
142142
{
143143
current++; // skip delimiter.
144-
current = current + HttpTokenParsingRules.GetWhitespaceLength(input, current);
144+
current = current + HttpRuleParser.GetWhitespaceLength(input, current);
145145
}
146146

147147
return current;

src/Mvc/Mvc.Core/src/Formatters/MediaType.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Microsoft.AspNetCore.Http.Headers;
77
using Microsoft.AspNetCore.Mvc.Core;
88
using Microsoft.Extensions.Primitives;
9+
using Microsoft.Net.Http.Headers;
910

1011
namespace Microsoft.AspNetCore.Mvc.Formatters;
1112

@@ -379,9 +380,9 @@ private static int GetNameLength(string input, int startIndex, out StringSegment
379380
var current = startIndex;
380381

381382
current++; // skip ';'
382-
current += HttpTokenParsingRules.GetWhitespaceLength(input, current);
383+
current += HttpRuleParser.GetWhitespaceLength(input, current);
383384

384-
var nameLength = HttpTokenParsingRules.GetTokenLength(input, current);
385+
var nameLength = HttpRuleParser.GetTokenLength(input, current);
385386
if (nameLength == 0)
386387
{
387388
name = default(StringSegment);
@@ -391,7 +392,7 @@ private static int GetNameLength(string input, int startIndex, out StringSegment
391392
name = new StringSegment(input, current, nameLength);
392393

393394
current += nameLength;
394-
current += HttpTokenParsingRules.GetWhitespaceLength(input, current);
395+
current += HttpRuleParser.GetWhitespaceLength(input, current);
395396

396397
return current - startIndex;
397398
}
@@ -401,14 +402,14 @@ private static int GetValueLength(string input, int startIndex, out StringSegmen
401402
var current = startIndex;
402403

403404
current++; // skip '='.
404-
current += HttpTokenParsingRules.GetWhitespaceLength(input, current);
405+
current += HttpRuleParser.GetWhitespaceLength(input, current);
405406

406-
var valueLength = HttpTokenParsingRules.GetTokenLength(input, current);
407+
var valueLength = HttpRuleParser.GetTokenLength(input, current);
407408

408409
if (valueLength == 0)
409410
{
410411
// A value can either be a token or a quoted string. Check if it is a quoted string.
411-
var result = HttpTokenParsingRules.GetQuotedStringLength(input, current, out valueLength);
412+
var result = HttpRuleParser.GetQuotedStringLength(input, current, out valueLength);
412413
if (result != HttpParseResult.Parsed)
413414
{
414415
// We have an invalid value. Reset the name and return.
@@ -425,7 +426,7 @@ private static int GetValueLength(string input, int startIndex, out StringSegmen
425426
}
426427

427428
current += valueLength;
428-
current += HttpTokenParsingRules.GetWhitespaceLength(input, current);
429+
current += HttpRuleParser.GetWhitespaceLength(input, current);
429430

430431
return current - startIndex;
431432
}

src/Mvc/Mvc.Core/src/Microsoft.AspNetCore.Mvc.Core.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ Microsoft.AspNetCore.Mvc.RouteAttribute</Description>
3131
<Compile Include="$(SharedSourceRoot)ResultsHelpers\*.cs" LinkBase="Shared" />
3232
<Compile Include="$(SharedSourceRoot)ProblemDetails\*.cs" LinkBase="Shared" />
3333
<Compile Include="$(SharedSourceRoot)MediaType\ReadOnlyMediaTypeHeaderValue.cs" LinkBase="Shared" />
34-
<Compile Include="$(SharedSourceRoot)MediaType\HttpTokenParsingRule.cs" LinkBase="Shared" />
34+
<Compile Include="$(SharedSourceRoot)HttpParseResult.cs" LinkBase="Shared" />
35+
<Compile Include="$(SharedSourceRoot)HttpRuleParser.cs" LinkBase="Shared" />
3536
<Compile Include="$(SharedSourceRoot)RoutingMetadata\AcceptsMetadata.cs" LinkBase="Shared" />
3637
<Compile Include="$(SharedSourceRoot)TrimmingAppContextSwitches.cs" LinkBase="Shared" />
3738
<Compile Include="$(SharedSourceRoot)Json\JsonSerializerExtensions.cs" LinkBase="Shared"/>
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)