def _parse_extension_param(state, definition, allow_quoted_string): param_name = http_header_util.consume_token(state) if param_name is None: raise ExtensionParsingException('No valid parameter name found') http_header_util.consume_lwses(state) if not http_header_util.consume_string(state, '='): definition.add_parameter(param_name, None) return http_header_util.consume_lwses(state) if allow_quoted_string: # TODO(toyoshim): Add code to validate that parsed param_value is token param_value = http_header_util.consume_token_or_quoted_string(state) else: param_value = http_header_util.consume_token(state) if param_value is None: raise ExtensionParsingException( 'No valid parameter value found on the right-hand side of ' 'parameter %r' % param_name) definition.add_parameter(param_name, param_value)
def parse_extensions(data, allow_quoted_string=False): """Parses Sec-WebSocket-Extensions header value returns a list of common.ExtensionParameter objects. Leading LWSes must be trimmed. """ state = http_header_util.ParsingState(data) extension_list = [] while True: extension = _parse_extension(state, allow_quoted_string) if extension is not None: extension_list.append(extension) http_header_util.consume_lwses(state) if http_header_util.peek(state) is None: break if not http_header_util.consume_string(state, ','): raise HandshakeException( 'Failed to parse Sec-WebSocket-Extensions header: ' 'Expected a comma but found %r' % http_header_util.peek(state)) http_header_util.consume_lwses(state) if len(extension_list) == 0: raise HandshakeException( 'Sec-WebSocket-Extensions header contains no valid extension') return extension_list
def parse_extensions(data): """Parses Sec-WebSocket-Extensions header value returns a list of common.Extension objects. Leading LWSes must be trimmed. """ state = http_header_util.ParsingState(data) extension_list = [] while True: extension = _parse_extension(state) if extension is not None: extension_list.append(extension) http_header_util.consume_lwses(state) if http_header_util.peek(state) is None: break if not http_header_util.consume_string(state, ','): raise HandshakeError( 'Failed to parse Sec-WebSocket-Extensions header: ' 'Expected a comma but found %r' % http_header_util.peek(state)) http_header_util.consume_lwses(state) if len(extension_list) == 0: raise HandshakeError( 'Sec-WebSocket-Extensions header contains no valid extension') return extension_list
def parse_token_list(data): """Parses a header value which follows 1#token and returns parsed elements as a list of strings. Leading LWSes must be trimmed. """ state = http_header_util.ParsingState(data) token_list = [] while True: token = http_header_util.consume_token(state) if token is not None: token_list.append(token) http_header_util.consume_lwses(state) if http_header_util.peek(state) is None: break if not http_header_util.consume_string(state, ','): raise HandshakeException( 'Expected a comma but found %r' % http_header_util.peek(state)) http_header_util.consume_lwses(state) if len(token_list) == 0: raise HandshakeException('No valid token found') return token_list
def parse_extensions(data, allow_quoted_string=False): """Parses Sec-WebSocket-Extensions header value returns a list of ExtensionParameter objects. Leading LWSes must be trimmed. """ state = http_header_util.ParsingState(data) extension_list = [] while True: extension = _parse_extension(state, allow_quoted_string) if extension is not None: extension_list.append(extension) http_header_util.consume_lwses(state) if http_header_util.peek(state) is None: break if not http_header_util.consume_string(state, ','): raise ExtensionParsingException( 'Failed to parse Sec-WebSocket-Extensions header: ' 'Expected a comma but found %r' % http_header_util.peek(state)) http_header_util.consume_lwses(state) if len(extension_list) == 0: raise ExtensionParsingException('No valid extension entry found') return extension_list
def parse_token_list(data): """Parses a header value which follows 1#token and returns parsed elements as a list of strings. Leading LWSes must be trimmed. """ state = http_header_util.ParsingState(data) token_list = [] while True: token = http_header_util.consume_token(state) if token is not None: token_list.append(token) http_header_util.consume_lwses(state) if http_header_util.peek(state) is None: break if not http_header_util.consume_string(state, ','): raise HandshakeException('Expected a comma but found %r' % http_header_util.peek(state)) http_header_util.consume_lwses(state) if len(token_list) == 0: raise HandshakeException('No valid token found') return token_list
def parse_extensions(data): """Parse Sec-WebSocket-Extensions header value. Returns a list of ExtensionParameter objects. Leading LWSes must be trimmed. """ state = http_header_util.ParsingState(data) extension_list = [] while True: extension = _parse_extension(state) if extension is not None: extension_list.append(extension) http_header_util.consume_lwses(state) if http_header_util.peek(state) is None: break if not http_header_util.consume_string(state, ','): raise ExtensionParsingException( 'Failed to parse Sec-WebSocket-Extensions header: ' 'Expected a comma but found %r' % http_header_util.peek(state)) http_header_util.consume_lwses(state) if len(extension_list) == 0: raise ExtensionParsingException( 'No valid extension entry found') return extension_list
def _parse_extension(state, allow_quoted_string): extension_token = http_header_util.consume_token(state) if extension_token is None: return None extension = ExtensionParameter(extension_token) while True: http_header_util.consume_lwses(state) if not http_header_util.consume_string(state, ';'): break http_header_util.consume_lwses(state) try: _parse_extension_param(state, extension,
def _parse_extension(state, allow_quoted_string): extension_token = http_header_util.consume_token(state) if extension_token is None: return None extension = ExtensionParameter(extension_token) while True: http_header_util.consume_lwses(state) if not http_header_util.consume_string(state, ';'): break http_header_util.consume_lwses(state) try: _parse_extension_param(state, extension, allow_quoted_string) except ExtensionParsingException, e: raise ExtensionParsingException( 'Failed to parse parameter for %r (%r)' % (extension_token, e))
def _parse_extension(state): extension_token = http_header_util.consume_token(state) if extension_token is None: return None extension = Extension(extension_token) while True: http_header_util.consume_lwses(state) if not http_header_util.consume_string(state, ';'): break http_header_util.consume_lwses(state) try: _parse_extension_param(state, extension) except HandshakeError, e: raise HandshakeError( 'Failed to parse Sec-WebSocket-Extensions header: ' 'Failed to parse parameter for %r (%r)' % (extension_token, e))
def _parse_extension_param(state, definition): param_name = http_header_util.consume_token(state) if param_name is None: raise HandshakeError('No valid parameter name found') http_header_util.consume_lwses(state) if not http_header_util.consume_string(state, '='): definition.add_parameter(param_name, None) return http_header_util.consume_lwses(state) param_value = http_header_util.consume_token_or_quoted_string(state) if param_value is None: raise HandshakeError( 'No valid parameter value found on the right-hand side of ' 'parameter %r' % param_name) definition.add_parameter(param_name, param_value)