import base64 import json def main(request, response): headers = [] headers.append(('X-ServiceWorker-ServerHeader', 'SetInTheServer')) if "ACAOrigin" in request.GET: for item in request.GET["ACAOrigin"].split(","): headers.append(("Access-Control-Allow-Origin", item)) for suffix in ["Headers", "Methods", "Credentials"]: query = "ACA%s" % suffix header = "Access-Control-Allow-%s" % suffix if query in request.GET: headers.append((header, request.GET[query])) if "ACEHeaders" in request.GET: headers.append(("Access-Control-Expose-Headers", request.GET[query])) if ("Auth" in request.GET and not request.auth.username) or "AuthFail" in request.GET: status = 401 headers.append(('WWW-Authenticate', 'Basic realm="Restricted"')) body = 'Authentication canceled' return status, headers, body if "PNGIMAGE" in request.GET: headers.append(("Content-Type", "image/png")) body = base64.decodestring("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1B" "AACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMG" "jBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=") return headers, body username = request.auth.username if request.auth.username else "undefined" password = request.auth.password if request.auth.username else "undefined" cookie = request.cookies['cookie'].value if 'cookie' in request.cookies else "undefined" files = [] for key, values in request.POST.iteritems(): assert len(values) == 1 value = values[0] if not hasattr(value, "file"): continue data = value.file.read() files.append({"key": key, "name": value.file.name, "type": value.type, "error": 0, #TODO, "size": len(data), "content": data}) get_data = {key:request.GET[key] for key,value in request.GET.iteritems()} post_data = {key:request.POST[key] for key,value in request.POST.iteritems() if not hasattr(request.POST[key], "file")} headers_data = {key:request.headers[key] for key,value in request.headers.iteritems()} data = {"jsonpResult": "success", "method": request.method, "headers": headers_data, "body": request.body, "files": files, "GET": get_data, "POST": post_data, "username": username, "password": password, "cookie": cookie} return headers, "report( %s )" % json.dumps(data)