# 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")