aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaronGreenback <jimcartlidge@yahoo.co.uk>2021-05-08 12:52:25 +0100
committerBaronGreenback <jimcartlidge@yahoo.co.uk>2021-05-08 12:52:25 +0100
commitbd71de131c384765b9240b7a54649e2c9258b133 (patch)
tree5146ec86c5c72929f480b02202db0a05437326e8
parent7185de970c2abef0255ca1ce5321c5d841ddefb8 (diff)
Changed to use span
-rw-r--r--Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs21
-rw-r--r--tests/Jellyfin.Api.Tests/Jellyfin.Api.Tests.csproj1
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj1
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Middleware/EncodedQueryStringTest.cs (renamed from tests/Jellyfin.Api.Tests/Controllers/EncodedQueryStringTest.cs)3
4 files changed, 17 insertions, 9 deletions
diff --git a/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs b/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
index 44b30baac..c89a318e1 100644
--- a/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
+++ b/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Web;
+using MediaBrowser.Common.Extensions;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.Extensions.Primitives;
@@ -61,19 +62,23 @@ namespace Jellyfin.Server.Middleware
}
var pairs = new Dictionary<string, StringValues>();
- var queryString = unencodedKey.Split('&', System.StringSplitOptions.RemoveEmptyEntries);
+ var queryString = unencodedKey.SpanSplit('&');
foreach (var pair in queryString)
{
- var item = pair.Split('=', System.StringSplitOptions.RemoveEmptyEntries);
- if (item.Length > 0)
- {
- pairs.Add(item[0], new StringValues(item.Length == 2 ? item[1] : string.Empty));
- }
- else
+ var item = pair.Split('=');
+ item.MoveNext();
+
+ var key = item.Current;
+ var val = item.MoveNext() ? item.Current : string.Empty;
+ if (key.Length == 0 && val.Length == 0)
{
- pairs.Add(pair, string.Empty);
+ // encoded is an equals.
+ pairs.Add(pair.ToString(), new StringValues(string.Empty));
+ continue;
}
+
+ pairs.Add(key.ToString(), new StringValues(val.ToString()));
}
_store = new QueryCollection(pairs);
diff --git a/tests/Jellyfin.Api.Tests/Jellyfin.Api.Tests.csproj b/tests/Jellyfin.Api.Tests/Jellyfin.Api.Tests.csproj
index 397b863b7..e3577caee 100644
--- a/tests/Jellyfin.Api.Tests/Jellyfin.Api.Tests.csproj
+++ b/tests/Jellyfin.Api.Tests/Jellyfin.Api.Tests.csproj
@@ -37,6 +37,7 @@
<ItemGroup>
<ProjectReference Include="../../Jellyfin.Api/Jellyfin.Api.csproj" />
<ProjectReference Include="../../Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj" />
+ <ProjectReference Include="..\Jellyfin.Server.Integration.Tests\Jellyfin.Server.Integration.Tests.csproj" />
</ItemGroup>
</Project>
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj b/tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj
index 27713d58a..ccc18d686 100644
--- a/tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj
+++ b/tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj
@@ -42,6 +42,7 @@
<ItemGroup>
<ProjectReference Include="..\..\Emby.Server.Implementations\Emby.Server.Implementations.csproj" />
<ProjectReference Include="..\..\Jellyfin.Server.Implementations\Jellyfin.Server.Implementations.csproj" />
+ <ProjectReference Include="..\Jellyfin.Server.Integration.Tests\Jellyfin.Server.Integration.Tests.csproj" />
</ItemGroup>
</Project>
diff --git a/tests/Jellyfin.Api.Tests/Controllers/EncodedQueryStringTest.cs b/tests/Jellyfin.Server.Implementations.Tests/Middleware/EncodedQueryStringTest.cs
index d6a423dcd..e5865fb5a 100644
--- a/tests/Jellyfin.Api.Tests/Controllers/EncodedQueryStringTest.cs
+++ b/tests/Jellyfin.Server.Implementations.Tests/Middleware/EncodedQueryStringTest.cs
@@ -5,9 +5,10 @@ using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
+using Jellyfin.Server.Integration.Tests;
using Xunit;
-namespace Jellyfin.Api.Tests.Controllers
+namespace Jellyfin.Server.Implementations.Tests.Middleware
{
/// <summary>
/// Defines the test for encoded querystrings in the url.