1430818.sjs (1687B)
1 function getFileStream(filename) 2 { 3 let self = Components.classes["@mozilla.org/file/local;1"] 4 .createInstance(Components.interfaces.nsIFile); 5 self.initWithPath(getState("__LOCATION__")); 6 let file = self.parent; 7 file.append(filename); 8 let stream = Components.classes['@mozilla.org/network/file-input-stream;1'] 9 .createInstance(Components.interfaces.nsIFileInputStream); 10 stream.init(file, -1, -1, false); 11 return stream; 12 } 13 14 function handleRequest(request, response) 15 { 16 response.processAsync(); 17 response.setStatusLine(null, 200, "OK"); 18 response.setHeader("Content-Type", "text/xml", false); 19 20 switch (request.queryString) { 21 case "stylesheet": 22 { 23 let timer = Components.classes["@mozilla.org/timer;1"] 24 .createInstance(Components.interfaces.nsITimer); 25 timer.initWithCallback(() => { 26 setState("xslt", "loaded"); 27 response.finish(); 28 timer.cancel(); 29 }, 1000 /* milliseconds */, Components.interfaces.nsITimer.TYPE_REPEATING_SLACK); 30 break; 31 } 32 default: 33 { 34 let stream = getFileStream("1430818.xml"); 35 response.bodyOutputStream.writeFrom(stream, 36 stream.available()); 37 stream.close(); 38 let timer = Components.classes["@mozilla.org/timer;1"] 39 .createInstance(Components.interfaces.nsITimer); 40 timer.initWithCallback(() => { 41 if (getState("xslt") == "loaded") { 42 response.finish(); 43 timer.cancel(); 44 } 45 }, 100 /* milliseconds */, Components.interfaces.nsITimer.TYPE_REPEATING_SLACK); 46 break; 47 } 48 } 49 }