35 lines
1 KiB
JavaScript
35 lines
1 KiB
JavaScript
"use strict";
|
|
|
|
function handleRequest(request, response) {
|
|
response.setStatusLine(
|
|
request.httpVersion,
|
|
parseInt(request.queryString),
|
|
"Dynamic error"
|
|
);
|
|
response.setHeader("Content-Type", "image/png", false);
|
|
response.setHeader("Cache-Control", "max-age=604800", false);
|
|
|
|
// count requests
|
|
let image;
|
|
let count = JSON.parse(getSharedState("earlyHintCount"));
|
|
if (
|
|
request.hasHeader("X-Moz") &&
|
|
request.getHeader("X-Moz") === "early hint"
|
|
) {
|
|
count.hinted += 1;
|
|
// set to green/black horizontal stripes (71 bytes)
|
|
image = atob(
|
|
"iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAADklEQVQIW2OU+i/FAAcADoABNV8X" +
|
|
"GBMAAAAASUVORK5CYII="
|
|
);
|
|
} else {
|
|
count.normal += 1;
|
|
// set to purple/white checkered pattern (76 bytes)
|
|
image = atob(
|
|
"iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAE0lEQVQIW2P4//+/N8MkBiAGsgA1" +
|
|
"bAe1SzDY8gAAAABJRU5ErkJggg=="
|
|
);
|
|
}
|
|
setSharedState("earlyHintCount", JSON.stringify(count));
|
|
response.write(image);
|
|
}
|