#!/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)
