internal static string GetParameterForScheme()

in src/Microsoft.Azure.Relay/WebSockets/NetStandard20/WebSocketHandle.Managed.cs [372:411]


        internal static string GetParameterForScheme(string line, string scheme)
        {
            int basicIndex = line.IndexOf(scheme, StringComparison.OrdinalIgnoreCase);
            if (basicIndex != -1 && line.Length >= scheme.Length)
            {
                int i = basicIndex + scheme.Length;
                while (i < line.Length)
                {
                    int indexOfComma = line.IndexOf(',', i);
                    if (indexOfComma == -1)
                    {
                        return line.Substring(basicIndex).Trim(s_trimChars);
                    }

                    i = SkipWhitespace(line, indexOfComma + 1);
                    if (i == line.Length)
                    {
                        return line.Substring(basicIndex).Trim(s_trimChars);
                    }

                    if (line[i] == ',')
                    {
                        // Empty key value pair.
                        continue;
                    }

                    int newIndex;
                    if (IsNextScheme(line, i, out newIndex))
                    {
                        return line.Substring(basicIndex, i - basicIndex).Trim(s_trimChars);
                    }

                    i = newIndex;
                }

                return line.Substring(basicIndex).Trim(s_trimChars);
            }

            return null;
        }