コード例 #1
0
        static bool TryParseElement(Lexer lexer, out TransferCodingWithQualityHeaderValue parsedValue, out Token t)
        {
            parsedValue = null;

            t = lexer.Scan();
            if (t != Token.Type.Token)
            {
                return(false);
            }

            var result = new TransferCodingWithQualityHeaderValue();

            result.value = lexer.GetStringValue(t);

            t = lexer.Scan();

            // Parameters parsing
            if (t == Token.Type.SeparatorSemicolon && (!NameValueHeaderValue.TryParseParameters(lexer, out result.parameters, out t) || t != Token.Type.End))
            {
                return(false);
            }

            parsedValue = result;
            return(true);
        }
コード例 #2
0
        internal static bool TryParse <T> (string input, out T parsedValue, Func <T> factory) where T : TransferCodingHeaderValue
        {
            parsedValue = null;

            var lexer = new Lexer(input);
            var t     = lexer.Scan();

            if (t != Token.Type.Token)
            {
                return(false);
            }

            var result = factory();

            result.value = lexer.GetStringValue(t);

            t = lexer.Scan();

            // Parameters parsing
            if (t == Token.Type.SeparatorSemicolon)
            {
                if (!NameValueHeaderValue.TryParseParameters(lexer, out result.parameters))
                {
                    return(false);
                }
            }
            else if (t != Token.Type.End)
            {
                return(false);
            }

            parsedValue = result;
            return(true);
        }
コード例 #3
0
        static bool TryParseElement(Lexer lexer, out MediaTypeWithQualityHeaderValue parsedValue, out Token t)
        {
            parsedValue = null;

            string media;
            List <NameValueHeaderValue> parameters = null;
            var token = TryParseMediaType(lexer, out media);

            if (token == null)
            {
                t = Token.Empty;
                return(false);
            }

            t = token.Value;
            if (t == Token.Type.SeparatorSemicolon && !NameValueHeaderValue.TryParseParameters(lexer, out parameters, out t))
            {
                return(false);
            }

            parsedValue            = new MediaTypeWithQualityHeaderValue();
            parsedValue.media_type = media;
            parsedValue.parameters = parameters;
            return(true);
        }
        public static bool TryParse(string input, out ContentDispositionHeaderValue parsedValue)
        {
            parsedValue = null;

            var lexer = new Lexer(input);
            var t     = lexer.Scan();

            if (t.Kind != Token.Type.Token)
            {
                return(false);
            }

            List <NameValueHeaderValue> parameters = null;
            var type = lexer.GetStringValue(t);

            t = lexer.Scan();

            switch (t.Kind)
            {
            case Token.Type.SeparatorSemicolon:
                if (!NameValueHeaderValue.TryParseParameters(lexer, out parameters, out t) || t != Token.Type.End)
                {
                    return(false);
                }
                break;

            case Token.Type.End:
                break;

            default:
                return(false);
            }

            parsedValue = new ContentDispositionHeaderValue()
            {
                dispositionType = type,
                parameters      = parameters
            };

            return(true);
        }
コード例 #5
0
        public static bool TryParse(string input, out MediaTypeHeaderValue parsedValue)
        {
            parsedValue = null;

            var lexer = new Lexer(input);

            string media;
            List <NameValueHeaderValue> parameters = null;
            var token = TryParseMediaType(lexer, out media);

            if (token == null)
            {
                return(false);
            }

            switch (token.Value.Kind)
            {
            case Token.Type.SeparatorSemicolon:
                Token t;
                if (!NameValueHeaderValue.TryParseParameters(lexer, out parameters, out t) || t != Token.Type.End)
                {
                    return(false);
                }
                break;

            case Token.Type.End:
                break;

            default:
                return(false);
            }

            parsedValue = new MediaTypeHeaderValue()
            {
                media_type = media,
                parameters = parameters
            };

            return(true);
        }
コード例 #6
0
        internal static bool TryParse <T> (string input, out T parsedValue, Func <T> factory) where T : MediaTypeHeaderValue
        {
            parsedValue = null;

            var lexer = new Lexer(input);

            string media;
            List <NameValueHeaderValue> parameters = null;
            var token = TryParseMediaType(lexer, out media);

            if (token == null)
            {
                return(false);
            }

            switch (token.Value.Kind)
            {
            case Token.Type.SeparatorSemicolon:
                if (!NameValueHeaderValue.TryParseParameters(lexer, out parameters))
                {
                    return(false);
                }
                break;

            case Token.Type.End:
                break;

            default:
                return(false);
            }

            parsedValue            = factory();
            parsedValue.media_type = media;
            parsedValue.parameters = parameters;

            return(true);
        }