def __init__(self, d): """Takes headers as a dict or str. """ typecheck(d, (dict, str)) if isinstance(d, str): from aspen.exceptions import MalformedHeader def genheaders(): for line in d.splitlines(): if b':' not in line: # no colon separator in header raise MalformedHeader(line) k, v = line.split(b':', 1) if k != k.strip(): # disallowed leading or trailing whitspace # (per http://tools.ietf.org/html/rfc7230#section-3.2.4) raise MalformedHeader(line) yield k, v.strip() else: genheaders = d.iteritems CaseInsensitiveMapping.__init__(self, genheaders) # Cookie # ====== self.cookie = SimpleCookie() try: self.cookie.load(self.get('Cookie', b'')) except CookieError: pass # XXX really?
def __init__(self, raw): """Takes headers as a string. """ def genheaders(): for line in raw.splitlines(): k, v = line.split(':', 1) yield k.strip(), v.strip() CaseInsensitiveMapping.__init__(self, genheaders)
def test_case_insensitive_mapping_pop_is_case_insensitive(): m = CaseInsensitiveMapping() m['Foo'] = 1 m['foo'] = 99 m['fOO'] = 1 m['FOO'] = 11 expected = 11 actual = m.pop('foo') assert actual == expected, actual
def test_case_insensitive_mapping_get_is_case_insensitive(): m = CaseInsensitiveMapping() m['Foo'] = 1 m['foo'] = 11 m['fOO'] = 1 m['FOO'] = 1 expected = 1 actual = m.get('foo') assert actual == expected, actual
def test_case_insensitive_mapping_popall_is_case_insensitive(): m = CaseInsensitiveMapping() m['Foo'] = 1 m.add('foo', 99) m.add('fOO', 1) m.add('FOO', 11) expected = [1, 99, 1, 11] actual = m.popall('foo') assert actual == expected, actual
def test_case_insensitive_mapping_ones_is_case_insensitive(): m = CaseInsensitiveMapping() m['Foo'] = 1 m.add('foo', 8) m.add('fOO', 9) m.add('FOO', 12) m['bar'] = 2 m.add('BAR', 200) expected = [12, 200] actual = m.ones('Foo', 'Bar') assert actual == expected, actual
def test_case_insensitive_mapping_access_is_case_insensitive(): m = CaseInsensitiveMapping() m['Foo'] = 1 m['foo'] = 1 m['fOO'] = 1 m['FOO'] = 11 expected = 11 actual = m['foo'] assert actual == expected, actual
def __init__(self, raw): """Takes headers as a string. """ def genheaders(): for line in raw.splitlines(): k, v = line.split(':', 1) yield k.strip(), v.strip() CaseInsensitiveMapping.__init__(self, genheaders) # Cookie # ====== self.cookie = SimpleCookie() try: self.cookie.load(self.get('Cookie', '')) except CookieError: pass # XXX really?
def __init__(self, d): """Takes headers as a dict or str. """ typecheck(d, (dict, str)) if isinstance(d, str): def genheaders(): for line in d.splitlines(): k, v = line.split(':', 1) yield k.strip(), v.strip() else: genheaders = d.iteritems CaseInsensitiveMapping.__init__(self, genheaders) # Cookie # ====== self.cookie = SimpleCookie() try: self.cookie.load(self.get('Cookie', '')) except CookieError: pass # XXX really?