early_hint_error.sjs (1034B)
1 "use strict"; 2 3 function handleRequest(request, response) { 4 response.setStatusLine( 5 request.httpVersion, 6 parseInt(request.queryString), 7 "Dynamic error" 8 ); 9 response.setHeader("Content-Type", "image/png", false); 10 response.setHeader("Cache-Control", "max-age=604800", false); 11 12 // count requests 13 let image; 14 let count = JSON.parse(getSharedState("earlyHintCount")); 15 if ( 16 request.hasHeader("X-Moz") && 17 request.getHeader("X-Moz") === "early hint" 18 ) { 19 count.hinted += 1; 20 // set to green/black horizontal stripes (71 bytes) 21 image = atob( 22 "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAADklEQVQIW2OU+i/FAAcADoABNV8X" + 23 "GBMAAAAASUVORK5CYII=" 24 ); 25 } else { 26 count.normal += 1; 27 // set to purple/white checkered pattern (76 bytes) 28 image = atob( 29 "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAE0lEQVQIW2P4//+/N8MkBiAGsgA1" + 30 "bAe1SzDY8gAAAABJRU5ErkJggg==" 31 ); 32 } 33 setSharedState("earlyHintCount", JSON.stringify(count)); 34 response.write(image); 35 }