You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidarr/src/Microsoft.AspNet.SignalR.Owin/Infrastructure/PrefixMatcher.cs

51 lines
1.2 KiB

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.
using System;
namespace Microsoft.AspNet.SignalR.Owin.Infrastructure
{
internal static class PrefixMatcher
{
public static bool IsMatch(string pathBase, string path)
{
pathBase = EnsureStartsWithSlash(pathBase);
path = EnsureStartsWithSlash(path);
var pathLength = path.Length;
var pathBaseLength = pathBase.Length;
if (pathLength < pathBaseLength)
{
return false;
}
if (pathLength > pathBaseLength && path[pathBaseLength] != '/')
{
return false;
}
if (!path.StartsWith(pathBase, StringComparison.OrdinalIgnoreCase))
{
return false;
}
return true;
}
private static string EnsureStartsWithSlash(string path)
{
if (path.Length == 0)
{
return path;
}
if (path[0] == '/')
{
return path;
}
return '/' + path;
}
}
}