| 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 |
| |