| import time |
| import json |
| import re |
| |
| def main(request, response): |
| op = request.GET.first("op"); |
| key = request.GET.first("reportID") |
| |
| if op == "take": |
| timeout = float(request.GET.first("timeout")) |
| t0 = time.time() |
| while time.time() - t0 < timeout: |
| time.sleep(0.5) |
| value = request.server.stash.take(key=key) |
| if value is not None: |
| return [("Content-Type", "application/json")], value |
| |
| return [("Content-Type", "application/json")], json.dumps({'error': 'No such report.' , 'guid' : key}) |
| |
| if op == "cookies": |
| cval = request.server.stash.take(key=re.sub('^...', 'ccc', key)) |
| if cval is None: |
| cval = "\"None\"" |
| |
| return [("Content-Type", "application/json")], "{ \"reportCookies\" : " + cval + "}" |
| |
| if hasattr(request, 'Cookies'): |
| request.server.stash.put(key=re.sub('^...', 'ccc', key), value=request.Cookies) |
| |
| report = request.body |
| report.rstrip() |
| request.server.stash.take(key=key) |
| request.server.stash.put(key=key, value=report) |
| return [("Content-Type", "text/plain")], "Recorded report " + report |