image/test/reftest/generic/check-header.sjs

Wed, 31 Dec 2014 06:55:46 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:46 +0100
changeset 1
ca08bd8f51b2
permissions
-rw-r--r--

Added tag TORBROWSER_REPLICA for changeset 6474c204b198

     1 const BinaryOutputStream = Components.Constructor("@mozilla.org/binaryoutputstream;1", "nsIBinaryOutputStream", "setOutputStream");
     3 function isCatchall(v)
     4 {
     5   // "image/*" item exactly or with a quality factor
     6   return /^image\/\*(?:|;q=(?:1(?:\.0{0,3})?|0(?:\.\d{0,3})?))$/.test(v);
     7 }
     9 /*
    10 # Python used to generate the following byte array
    11 def toHex(n):
    12   if n < 16: return "0x" + hex(n)[2:].upper()
    13   return "0x" + hex(n)[2:].upper()
    15 def hexFile(name):
    16   f = open(name, "rb")
    17   try:
    18     while True:
    19       print toHex(ord(f.read(1))) + ", ",
    20   except:
    21     pass
    23 hexFile("image/test/reftest/generic/green.png")
    24 */
    26 const IMAGE_DATA =
    27   [
    28    0x89,  0x50,  0x4E,  0x47,  0x0D,  0x0A,  0x1A,  0x0A,  0x00,  0x00,  0x00,
    29    0x0D,  0x49,  0x48,  0x44,  0x52,  0x00,  0x00,  0x00,  0x64,  0x00,  0x00,
    30    0x00,  0x64,  0x08,  0x02,  0x00,  0x00,  0x00,  0xFF,  0x80,  0x02,  0x03,
    31    0x00,  0x00,  0x00,  0x01,  0x73,  0x52,  0x47,  0x42,  0x00,  0xAE,  0xCE,
    32    0x1C,  0xE9,  0x00,  0x00,  0x00,  0x9E,  0x49,  0x44,  0x41,  0x54,  0x78,
    33    0xDA,  0xED,  0xD0,  0x31,  0x01,  0x00,  0x00,  0x08,  0x03,  0xA0,  0x69,
    34    0xFF,  0xCE,  0x5A,  0xC1,  0xCF,  0x07,  0x22,  0x50,  0x99,  0x70,  0xD4,
    35    0x0A,  0x64,  0xC9,  0x92,  0x25,  0x4B,  0x96,  0x2C,  0x05,  0xB2,  0x64,
    36    0xC9,  0x92,  0x25,  0x4B,  0x96,  0x02,  0x59,  0xB2,  0x64,  0xC9,  0x92,
    37    0x25,  0x4B,  0x81,  0x2C,  0x59,  0xB2,  0x64,  0xC9,  0x92,  0xA5,  0x40,
    38    0x96,  0x2C,  0x59,  0xB2,  0x64,  0xC9,  0x52,  0x20,  0x4B,  0x96,  0x2C,
    39    0x59,  0xB2,  0x64,  0x29,  0x90,  0x25,  0x4B,  0x96,  0x2C,  0x59,  0xB2,
    40    0x14,  0xC8,  0x92,  0x25,  0x4B,  0x96,  0x2C,  0x59,  0x0A,  0x64,  0xC9,
    41    0x92,  0x25,  0x4B,  0x96,  0x2C,  0x05,  0xB2,  0x64,  0xC9,  0x92,  0x25,
    42    0x4B,  0x96,  0x02,  0x59,  0xB2,  0x64,  0xC9,  0x92,  0x25,  0x4B,  0x81,
    43    0x2C,  0x59,  0xB2,  0x64,  0xC9,  0x92,  0xA5,  0x40,  0x96,  0x2C,  0x59,
    44    0xB2,  0x64,  0xC9,  0x52,  0x20,  0x4B,  0x96,  0x2C,  0x59,  0xB2,  0x64,
    45    0x29,  0x90,  0x25,  0x4B,  0x96,  0x2C,  0x59,  0xB2,  0x14,  0xC8,  0x92,
    46    0x25,  0x4B,  0x96,  0x2C,  0x59,  0x0A,  0x64,  0xC9,  0xFA,  0xB6,  0x89,
    47    0x5F,  0x01,  0xC7,  0x24,  0x83,  0xB2,  0x0C,  0x00,  0x00,  0x00,  0x00,
    48    0x49,  0x45,  0x4E,  0x44,  0xAE,  0x42,  0x60,  0x82,
    49   ];
    51 function handleRequest(request, response)
    52 {
    53   response.setHeader("Content-Type", "text/plain", false);
    54   response.setHeader("Cache-Control", "no-cache", false);
    56   var accept = request.hasHeader("Accept")
    57              ? request.getHeader("Accept")
    58              : "";
    60   if (accept.split(",").some(isCatchall))
    61   {
    62     response.setHeader("Content-Type", "image/png", false);
    64     var stream = new BinaryOutputStream(response.bodyOutputStream);
    65     stream.writeByteArray(IMAGE_DATA, IMAGE_DATA.length);
    66   }
    67   else
    68   {
    69     response.setStatusLine(request.httpVersion, 404, "Not found");
    70     response.write("Accept header contained: " + accept);
    71   }
    72 }

mercurial