Exemple #1
0
        //
        // Check reserved chars according to RFC 3987 in a specific component
        //
        internal static bool CheckIsReserved(char ch, UriComponents component)
        {
            if ((component != UriComponents.Scheme) &&
                (component != UriComponents.UserInfo) &&
                (component != UriComponents.Host) &&
                (component != UriComponents.Port) &&
                (component != UriComponents.Path) &&
                (component != UriComponents.Query) &&
                (component != UriComponents.Fragment)
                )
            {
                return((component == (UriComponents)0) ? UriHelper.IsGenDelim(ch) : false);
            }
            else
            {
                switch (component)
                {
                // Reserved chars according to RFC 3987
                case UriComponents.UserInfo:
                    if (ch == '/' || ch == '?' || ch == '#' || ch == '[' || ch == ']' || ch == '@')
                    {
                        return(true);
                    }
                    break;

                case UriComponents.Host:
                    if (ch == ':' || ch == '/' || ch == '?' || ch == '#' || ch == '[' || ch == ']' || ch == '@')
                    {
                        return(true);
                    }
                    break;

                case UriComponents.Path:
                    if (ch == '/' || ch == '?' || ch == '#' || ch == '[' || ch == ']')
                    {
                        return(true);
                    }
                    break;

                case UriComponents.Query:
                    if (ch == '#' || ch == '[' || ch == ']')
                    {
                        return(true);
                    }
                    break;

                case UriComponents.Fragment:
                    if (ch == '#' || ch == '[' || ch == ']')
                    {
                        return(true);
                    }
                    break;

                default:
                    break;
                }
                return(false);
            }
        }
        //
        // Check reserved chars according to RFC 3987 in a specific component
        //
        internal static bool CheckIsReserved(char ch, UriComponents component)
        {
            if ((UriComponents.AbsoluteUri & component) == 0)
            {
                return(component == 0 && UriHelper.IsGenDelim(ch));
            }

            return(UriHelper.RFC3986ReservedMarks.Contains(ch));
        }
Exemple #3
0
        //
        // Check reserved chars according to RFC 3987 in a specific component
        //
        internal static bool CheckIsReserved(char ch, UriComponents component)
        {
            if ((component != UriComponents.Scheme) &&
                (component != UriComponents.UserInfo) &&
                (component != UriComponents.Host) &&
                (component != UriComponents.Port) &&
                (component != UriComponents.Path) &&
                (component != UriComponents.Query) &&
                (component != UriComponents.Fragment)
                )
            {
                return((component == (UriComponents)0) ? UriHelper.IsGenDelim(ch) : false);
            }

            return(UriHelper.RFC3986ReservedMarks.IndexOf(ch) >= 0);
        }
Exemple #4
0
        //
        // Check reserved chars according to RFC 3987 in a specific component
        //
        internal static bool CheckIsReserved(char ch, UriComponents component)
        {
            if ((component != UriComponents.Scheme) &&
                (component != UriComponents.UserInfo) &&
                (component != UriComponents.Host) &&
                (component != UriComponents.Port) &&
                (component != UriComponents.Path) &&
                (component != UriComponents.Query) &&
                (component != UriComponents.Fragment)
                )
            {
                return((component == (UriComponents)0) ? UriHelper.IsGenDelim(ch) : false);
            }
            else if (UriParser.DontEnableStrictRFC3986ReservedCharacterSets)
            {
                // Since we aren't enabling strict RFC 3986 reserved sets, we stick with the old behavior
                // (for app-compat) which was a broken mix of RFCs 2396 and 3986.
                switch (component)
                {
                case UriComponents.UserInfo:
                    if (ch == '/' || ch == '?' || ch == '#' || ch == '[' || ch == ']' || ch == '@')
                    {
                        return(true);
                    }
                    break;

                case UriComponents.Host:
                    if (ch == ':' || ch == '/' || ch == '?' || ch == '#' || ch == '[' || ch == ']' || ch == '@')
                    {
                        return(true);
                    }
                    break;

                case UriComponents.Path:
                    if (ch == '/' || ch == '?' || ch == '#' || ch == '[' || ch == ']')
                    {
                        return(true);
                    }
                    break;

                case UriComponents.Query:
                    if (ch == '#' || ch == '[' || ch == ']')
                    {
                        return(true);
                    }
                    break;

                case UriComponents.Fragment:
                    if (ch == '#' || ch == '[' || ch == ']')
                    {
                        return(true);
                    }
                    break;

                default:
                    break;
                }
                return(false);
            }
            else
            {
                return(UriHelper.RFC3986ReservedMarks.IndexOf(ch) >= 0);
            }
        }