cors.py (1481B)
1 import os 2 from wptserve import pipes 3 4 from wptserve.utils import isomorphic_decode 5 6 def run_other(request, response, path): 7 #This is a terrible hack 8 environ = {u"__file__": path} 9 exec(compile(open(path, u"r").read(), path, u'exec'), environ, environ) 10 rv = environ[u"main"](request, response) 11 return rv 12 13 def main(request, response): 14 origin = request.GET.first(b"origin", request.headers[b"origin"]) 15 credentials = request.GET.first(b"credentials", b"true") 16 17 response.headers.update([(b"Access-Control-Allow-Origin", origin), 18 (b"Access-Control-Allow-Credentials", credentials)]) 19 20 handler = request.GET.first(b'run') 21 if handler in [b"status-reconnect", 22 b"message", 23 b"redirect", 24 b"cache-control"]: 25 if handler == b"cache-control": 26 response.headers.set(b"Content-Type", b"text/event-stream") 27 rv = open(os.path.join(request.doc_root, u"eventsource", u"resources", u"cache-control.event_stream"), u"r").read() 28 response.content = rv 29 pipes.sub(request, response) 30 return 31 elif handler == b"redirect": 32 return run_other(request, response, os.path.join(request.doc_root, u"common", u"redirect.py")) 33 else: 34 return run_other(request, response, os.path.join(os.path.dirname(isomorphic_decode(__file__)), isomorphic_decode(handler) + u".py")) 35 else: 36 return