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