private static bool MatchHeader(HeaderMatchMode matchMode, string requestHeaderValue, string metadataHeaderValue, bool isCaseSensitive) { var comparison = isCaseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase; return(matchMode switch { HeaderMatchMode.ExactHeader => MemoryExtensions.Equals(requestHeaderValue, metadataHeaderValue, comparison), HeaderMatchMode.HeaderPrefix => requestHeaderValue != null && metadataHeaderValue != null && MemoryExtensions.StartsWith(requestHeaderValue, metadataHeaderValue, comparison), _ => throw new NotImplementedException(matchMode.ToString()), });
private static bool MatchQueryParameter(QueryParameterMatchMode matchMode, string requestQueryParameterValue, string metadataQueryParameterValue, bool isCaseSensitive) { var comparison = isCaseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase; return(matchMode switch { QueryParameterMatchMode.Exact => MemoryExtensions.Equals(requestQueryParameterValue, metadataQueryParameterValue, comparison), QueryParameterMatchMode.Prefix => requestQueryParameterValue != null && metadataQueryParameterValue != null && MemoryExtensions.StartsWith(requestQueryParameterValue, metadataQueryParameterValue, comparison), QueryParameterMatchMode.Contains => requestQueryParameterValue != null && metadataQueryParameterValue != null && MemoryExtensions.Contains(requestQueryParameterValue, metadataQueryParameterValue, comparison), QueryParameterMatchMode.NotContains => requestQueryParameterValue != null && metadataQueryParameterValue != null && !MemoryExtensions.Contains(requestQueryParameterValue, metadataQueryParameterValue, comparison), _ => throw new NotImplementedException(matchMode.ToString()), });