allowed.sjs (1760B)
1 function parseQuery(request, key) { 2 var params = request.queryString.split("&"); 3 for (var j = 0; j < params.length; ++j) { 4 var p = params[j]; 5 if (p == key) { 6 return true; 7 } 8 if (p.indexOf(key + "=") == 0) { 9 return p.substring(key.length + 1); 10 } 11 if (!p.includes("=") && key == "") { 12 return p; 13 } 14 } 15 return false; 16 } 17 18 var types = { 19 js: "text/javascript", 20 m4s: "video/mp4", 21 mp4: "video/mp4", 22 ogg: "video/ogg", 23 ogv: "video/ogg", 24 oga: "audio/ogg", 25 webm: "video/webm", 26 wav: "audio/x-wav", 27 }; 28 29 // Return file with name as per the query string with access control 30 // allow headers. 31 function handleRequest(request, response) { 32 var resource = parseQuery(request, ""); 33 34 var file = Services.dirsvc.get("CurWorkD", Ci.nsIFile); 35 var fis = Cc["@mozilla.org/network/file-input-stream;1"].createInstance( 36 Ci.nsIFileInputStream 37 ); 38 var bis = Cc["@mozilla.org/binaryinputstream;1"].createInstance( 39 Ci.nsIBinaryInputStream 40 ); 41 var paths = "tests/dom/media/test/" + resource; 42 var split = paths.split("/"); 43 for (var i = 0; i < split.length; ++i) { 44 file.append(split[i]); 45 } 46 fis.init(file, -1, -1, false); 47 dump("file=" + file + "\n"); 48 bis.setInputStream(fis); 49 var bytes = bis.readBytes(bis.available()); 50 response.setStatusLine(request.httpVersion, 206, "Partial Content"); 51 response.setHeader( 52 "Content-Range", 53 "bytes 0-" + (bytes.length - 1) + "/" + bytes.length 54 ); 55 response.setHeader("Content-Length", "" + bytes.length, false); 56 var ext = resource.substring(resource.lastIndexOf(".") + 1); 57 response.setHeader("Content-Type", types[ext], false); 58 response.setHeader("Access-Control-Allow-Origin", "*"); 59 response.write(bytes, bytes.length); 60 bis.close(); 61 }