StringBuilder extension to uppercase string
This commit is contained in:
parent
54610b8fe4
commit
3e3746f56e
|
|
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
|
using Microsoft.AspNetCore.ResponseCaching.Internal;
|
||||||
using Microsoft.Extensions.ObjectPool;
|
using Microsoft.Extensions.ObjectPool;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
|
|
@ -54,11 +55,19 @@ namespace Microsoft.AspNetCore.ResponseCaching.Internal
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
builder
|
builder
|
||||||
.Append(request.Method.ToUpperInvariant())
|
.AppendUpperInvariant(request.Method)
|
||||||
.Append(KeyDelimiter)
|
.Append(KeyDelimiter);
|
||||||
.Append(_options.UseCaseSensitivePaths ? request.Path.Value : request.Path.Value.ToUpperInvariant());
|
|
||||||
|
|
||||||
return builder.ToString();;
|
if (_options.UseCaseSensitivePaths)
|
||||||
|
{
|
||||||
|
builder.Append(request.Path.Value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
builder.AppendUpperInvariant(request.Path.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder.ToString();
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|
@ -123,7 +132,7 @@ namespace Microsoft.AspNetCore.ResponseCaching.Internal
|
||||||
foreach (var query in context.HttpContext.Request.Query.OrderBy(q => q.Key, StringComparer.OrdinalIgnoreCase))
|
foreach (var query in context.HttpContext.Request.Query.OrderBy(q => q.Key, StringComparer.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
builder.Append(KeyDelimiter)
|
builder.Append(KeyDelimiter)
|
||||||
.Append(query.Key.ToUpperInvariant())
|
.AppendUpperInvariant(query.Key)
|
||||||
.Append("=")
|
.Append("=")
|
||||||
.Append(query.Value);
|
.Append(query.Value);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.ResponseCaching.Internal
|
||||||
|
{
|
||||||
|
internal static class StringBuilderExtensions
|
||||||
|
{
|
||||||
|
internal static StringBuilder AppendUpperInvariant(this StringBuilder builder, string value)
|
||||||
|
{
|
||||||
|
builder.EnsureCapacity(builder.Length + value.Length);
|
||||||
|
for (var i = 0; i < value.Length; i++)
|
||||||
|
{
|
||||||
|
builder.Append(char.ToUpperInvariant(value[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue