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