def parse_cookie(header, charset = 'utf-8', errors = 'ignore', cls = None): """Parse a cookie. Either from a string or WSGI environ. Per default encoding errors are ignored. If you want a different behavior you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a :exc:`HTTPUnicodeError` is raised. .. versionchanged:: 0.5 This function now returns a :class:`TypeConversionDict` instead of a regular dict. The `cls` parameter was added. :param header: the header to be used to parse the cookie. Alternatively this can be a WSGI environment. :param charset: the charset for the cookie values. :param errors: the error behavior for the charset decoding. :param cls: an optional dict class to use. If this is not specified or `None` the default :class:`TypeConversionDict` is used. """ if isinstance(header, dict): header = header.get('HTTP_COOKIE', '') if cls is None: cls = TypeConversionDict cookie = _ExtendedCookie() cookie.load(header) result = {} for key, value in cookie.iteritems(): if value.value is not None: result[key] = _decode_unicode(unquote_header_value(value.value), charset, errors) return cls(result)
def parse_cookie(header, charset="utf-8", errors="replace", cls=None): """Parse a cookie. Either from a string or WSGI environ. Per default encoding errors are ignored. If you want a different behavior you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a :exc:`HTTPUnicodeError` is raised. .. versionchanged:: 0.5 This function now returns a :class:`TypeConversionDict` instead of a regular dict. The `cls` parameter was added. :param header: the header to be used to parse the cookie. Alternatively this can be a WSGI environment. :param charset: the charset for the cookie values. :param errors: the error behavior for the charset decoding. :param cls: an optional dict class to use. If this is not specified or `None` the default :class:`TypeConversionDict` is used. """ if isinstance(header, dict): header = header.get("HTTP_COOKIE", "") if cls is None: cls = TypeConversionDict cookie = _ExtendedCookie() cookie.load(header) result = {} # decode to unicode and skip broken items. Our extended morsel # and extended cookie will catch CookieErrors and convert them to # `None` items which we have to skip here. for key, value in cookie.iteritems(): if value.value is not None: result[key] = _decode_unicode(unquote_header_value(value.value), charset, errors) return cls(result)
def parse_cookie(header, charset = 'utf-8', errors = 'ignore', cls = None): if isinstance(header, dict): header = header.get('HTTP_COOKIE', '') if cls is None: cls = TypeConversionDict cookie = _ExtendedCookie() cookie.load(header) result = {} for key, value in cookie.iteritems(): if value.value is not None: result[key] = _decode_unicode(unquote_header_value(value.value), charset, errors) return cls(result)
def parse_cookie(header, charset='utf-8', errors='ignore', cls=None): if isinstance(header, dict): header = header.get('HTTP_COOKIE', '') if cls is None: cls = TypeConversionDict cookie = _ExtendedCookie() cookie.load(header) result = {} for key, value in cookie.iteritems(): if value.value is not None: result[key] = _decode_unicode(unquote_header_value(value.value), charset, errors) return cls(result)
def parse_cookie(header, errors='replace', cls=None): """Parse a cookie. Either from a string or WSGI environ. Per default encoding errors are ignored. If you want a different behavior you can set `errors` to ``'replace'`` or ``'strict'``. In strict mode a :exc:`HTTPUnicodeError` is raised. .. versionchanged:: 0.5 This function now returns a :class:`TypeConversionDict` instead of a regular dict. The `cls` parameter was added. :param header: the header to be used to parse the cookie. Alternatively this can be a WSGI environment. :param charset: the charset for the cookie values. :param errors: the error behavior for the charset decoding. :param cls: an optional dict class to use. If this is not specified or `None` the default :class:`TypeConversionDict` is used. """ if isinstance(header, dict): header = header.get('HTTP_COOKIE', '') header = to_native(header, _cookie_charset) if cls is None: cls = TypeConversionDict cookie = _ExtendedCookie() cookie.load(header) result = {} # decode to unicode and skip broken items. Our extended morsel # and extended cookie will catch CookieErrors and convert them to # `None` items which we have to skip here. for key, value in iteritems(cookie): if value.value is not None: result[to_unicode(key, _cookie_charset)] = \ to_unicode(unquote_header_value(value.value), _cookie_charset) return cls(result)