from urllib.parse import unquote
from wptserve.utils import isomorphic_decode, isomorphic_encode
import importlib
sleep = importlib.import_module("resource-timing.sleep")
def main(request, response):
index = isomorphic_encode(request.request_path).index(b"?")
args = isomorphic_encode(request.request_path[index+1:]).split(b"&")
headers = []
statusSent = False
headersSent = False
for arg in args:
if arg.startswith(b"ignored"):
continue
elif arg.endswith(b"ms"):
sleep.sleep_at_least(float(arg[0:-2]))
elif arg.startswith(b"redirect:"):
return (302, u"WEBPERF MARKETING"), [(b"Location", unquote(isomorphic_decode(arg[9:])))], u"TEST"
elif arg.startswith(b"mime:"):
headers.append((b"Content-Type", unquote(isomorphic_decode(arg[5:]))))
elif arg.startswith(b"send:"):
text = unquote(isomorphic_decode(arg[5:]))
if not statusSent:
# Default to a 200 status code.
response.writer.write_status(200)
statusSent = True
if not headersSent:
for key, value in headers:
response.writer.write_header(key, value)
response.writer.end_headers()
headersSent = True
response.writer.write_content(text)
elif arg.startswith(b"status:"):
code = int(unquote(isomorphic_decode(arg[7:])))
response.writer.write_status(code)
if code // 100 == 1:
# Terminate informational 1XX responses with an empty line.
response.writer.end_headers()
else:
statusSent = True
# else:
# error " INVALID ARGUMENT %s" % arg