#!/usr/bin/env python3

import os
import sys
import time
from urllib.parse import parse_qs

query = parse_qs(os.environ.get('QUERY_STRING', ''), keep_blank_values=True)
delay_ms = query.get('delay_ms', [None])[0]
conversion_data = query.get('conversionData', [None])[0]
priority = query.get('priority', [None])[0]

if delay_ms is not None:
    time.sleep(int(delay_ms) * 0.001)

sys.stdout.write(
    'status: 302\r\n'
    'Cache-Control: no-cache, no-store, must-revalidate\r\n'
    'Access-Control-Allow-Origin: *\r\n'
    'Access-Control-Allow-Methods: GET\r\n'
    'Content-Type: text/html\r\n'
)

if conversion_data is not None and priority is not None:
    sys.stdout.write('Location: /.well-known/private-click-measurement/trigger-attribution/{}/{}\r\n'.format(conversion_data, priority))
elif conversion_data is not None:
    sys.stdout.write('Location: /.well-known/private-click-measurement/trigger-attribution/{}\r\n'.format(conversion_data))

sys.stdout.write('\r\n')