Source code

Revision control

Copy as Markdown

Other Tools

# Supports two operations:
# - ?image=uuid: Returns an image, and records the request headers that were
# used to get that image.
# - ?read=uuid: Returns the request headers in the stash keyed by a given uuid.
import os
import json
from wptserve.utils import isomorphic_decode
def main(request, response):
if b"image" in request.GET:
uuid = request.GET[b"image"]
header_pairs = []
for header_name in request.headers.keys():
# ensure the header name/value are unicode strings
name = header_name.lower().decode("utf-8")
for header_value in request.headers.get_list(header_name):
value = header_value.decode("utf-8")
header_pairs.append([name, value])
request_headers = json.dumps(header_pairs)
request.server.stash.put(uuid, request_headers)
# Return a basic image.
response_headers = [
(b"Content-Type", b"image/png"),
(b"Access-Control-Allow-Origin", b"*")
]
image_path = os.path.join(
os.path.dirname(isomorphic_decode(__file__)),
u"../../../common/square.png"
)
return (200, response_headers, open(image_path, mode='rb').read())
elif b"read" in request.GET:
uuid = request.GET[b"read"]
stash_value = request.server.stash.take(uuid)
if stash_value is None:
stash_value = "null"
return (200, [(b"Content-Type", b"application/json")], str(stash_value))
return (404 , [], "Not found")