internal static string ReadAndFilterQueryString()

in src/Microsoft.Azure.Relay/HybridConnectionUtility.cs [51:89]


        internal static string ReadAndFilterQueryString(string queryString, Func<string, string, bool> predicate)
        {
            var updatedQueryString = new StringBuilder(queryString.Length);
            string[] queryParameters = queryString.TrimStart(QuestionMark).Split(Ampersand);
            bool firstPairAlreadyWritten = false;
            foreach (string queryParameter in queryParameters)
            {
                string[] keyAndValue = queryParameter.Split(EqualSign, 2);
                string key;
                string value;
                if (keyAndValue.Length == 2)
                {
                    key = WebUtility.UrlDecode(keyAndValue[0]);
                    value = WebUtility.UrlDecode(keyAndValue[1]);
                }
                else
                {
                    key = null;
                    value = WebUtility.UrlDecode(keyAndValue[0]);
                }

                if (predicate(key, value))
                {
                    // Copy as-is to the filtered queryString
                    if (firstPairAlreadyWritten)
                    {
                        updatedQueryString.Append('&');
                    }
                    else
                    {
                        firstPairAlreadyWritten = true;
                    }

                    updatedQueryString.Append(queryParameter);
                }
            }

            return updatedQueryString.ToString();
        }