summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/eventsource/resources/cors.py
blob: d01596c8366367b87e4fcfd971208c3e44604f31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import os
from wptserve import pipes

def run_other(request, response, path):
    #This is a terrible hack
    environ = {"__file__": path}
    execfile(path, environ, environ)
    rv = environ["main"](request, response)
    return rv

def main(request, response):
    origin = request.GET.first("origin", request.headers["origin"])
    credentials = request.GET.first("credentials", "true")

    response.headers.update([("Access-Control-Allow-Origin", origin),
                             ("Access-Control-Allow-Credentials", credentials)])

    handler = request.GET.first('run')
    if handler in ["status-reconnect",
                   "message",
                   "redirect",
                   "cache-control"]:
        if handler == "cache-control":
            response.headers.set("Content-Type", "text/event-stream")
            rv = open(os.path.join(request.doc_root, "eventsource", "resources", "cache-control.event_stream"), "r").read()
            response.content = rv
            pipes.sub(request, response)
            return
        elif handler == "redirect":
            return run_other(request, response, os.path.join(request.doc_root, "common", "redirect.py"))
        else:
            return run_other(request, response, os.path.join(os.path.split(__file__)[0], handler + ".py"))
    else:
        return