Add a shortcut for setting Location header.

This commit is contained in:
Aldo Cortesi 2012-04-28 22:54:45 +12:00
parent 2d989e2fbb
commit ee909e265b
2 changed files with 25 additions and 3 deletions

View File

@ -211,6 +211,26 @@ class ShortcutContentType:
return e.setParseAction(lambda x: klass(*x))
class ShortcutLocation:
def __init__(self, value):
self.value = value
def mod_response(self, settings, r):
r.headers.append(
(
LiteralGenerator("Location"),
self.value.get_generator(settings)
)
)
@classmethod
def expr(klass):
e = pp.Literal("l").suppress()
e = e + Value
return e.setParseAction(lambda x: klass(*x))
class Body:
def __init__(self, value):
self.value = value
@ -332,6 +352,7 @@ class Response:
DisconnectBefore,
DisconnectRandom,
ShortcutContentType,
ShortcutLocation,
)
version = "HTTP/1.1"
code = 200

View File

@ -177,9 +177,10 @@ class uDisconnects(libpry.AutoTree):
assert isinstance(v, rparse.DisconnectRandom)
class uShortcutContentType(libpry.AutoTree):
class uShortcuts(libpry.AutoTree):
def test_parse(self):
assert len(rparse.parse({}, "400:c'foo'").headers) == 1
assert rparse.parse({}, "400:c'foo'").headers[0][0][:] == "Content-Type"
assert rparse.parse({}, "400:l'foo'").headers[0][0][:] == "Location"
class uPauses(libpry.AutoTree):
@ -312,5 +313,5 @@ tests = [
uDisconnects(),
uMisc(),
uparse(),
uShortcutContentType()
uShortcuts()
]