blob: 3447edab746f024623be194ddb53253602728c4f [file] [log] [blame]
#!/usr/bin/env python3
import os
import sys
from urllib.parse import unquote
def add_cache_control(allow_cache):
if allow_cache is not None:
sys.stdout.write('Cache-Control: public, max-age=86400\r\n\r\n')
else:
# Workaround for https://bugs.webkit.org/show_bug.cgi?id=77538
# Caching redirects results in flakiness in tests that dump loader delegates.
sys.stdout.write('Cache-Control: no-store\r\n\r\n')
query = {}
for key_value in os.environ.get('QUERY_STRING', '').split('&'):
arr = key_value.split('=')
if len(arr) > 1:
if query.get(arr[0], None) is not None and arr[1] not in query[arr[0]]:
query[arr[0]].append(unquote('='.join(arr[1:])))
else:
query[arr[0]] = [unquote('='.join(arr[1:]))]
else:
query[arr[0]] = ['']
allow_cache = query.get('allowCache', [None])[0]
code = int(query.get('code', [302])[0])
refresh = query.get('refresh', [None])[0]
url = query.get('url', [''])[0]
sys.stdout.write('Content-Type: text/html\r\n')
if refresh is not None:
sys.stdout.write(
'status: 200\r\n'
'Refresh: {}; url={}\r\n'.format(refresh, url)
)
add_cache_control(allow_cache)
sys.exit(0)
sys.stdout.write(
'status: {}\r\n'
'Location: {}\r\n'.format(code, url)
)
add_cache_control(allow_cache)