Source code

Revision control

Copy as Markdown

Other Tools

"""
This generates a partial response containing valid JavaScript or image data.
"""
def main(request, response):
require_range = request.GET.first(b'require-range', b'')
pretend_offset = int(request.GET.first(b'pretend-offset', b'0'))
range_not_satisfiable = request.GET.first(b'range-not-satisfiable', b'')
content_type = request.GET.first(b'type', b'text/plain')
range_header = request.headers.get(b'Range', b'')
if require_range and not range_header:
response.set_error(412, u"Range header required")
response.write()
return
# 1x1 red PNG image (67 bytes)
png_data = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\x08\x02\x00\x00\x00\x90wS\xde\x00\x00\x00\x0cIDATx\x9cc\xf8\xcf\xc0\x00\x00\x00\x03\x00\x01\x00\x18\xdd\x8d\xb4\x00\x00\x00\x00IEND\xaeB`\x82'
if content_type == b'image/png':
to_send = png_data
else:
to_send = b'self.scriptExecuted = true;'
length = len(to_send)
response.headers.set(b"Content-Type", content_type)
response.headers.set(b"Accept-Ranges", b"bytes")
response.headers.set(b"Cache-Control", b"no-cache")
response.headers.set(b"Content-Length", length)
if range_not_satisfiable:
response.status = 416
response.headers.set(b"Content-Range", b"bytes */%d" % (pretend_offset + length))
else:
response.status = 206
content_range = b"bytes %d-%d/%d" % (
pretend_offset, pretend_offset + length - 1, pretend_offset + length)
response.headers.set(b"Content-Range", content_range)
response.content = to_send