var response;
var status = "no status";
self.addEventListener("fetch", (event) => {
    if (event.request.url.indexOf("status") !== -1) {
        event.respondWith(new Response(null, {status: 200, statusText: status}));
        return;
    }
    if (!event.request.url.endsWith(".fromserviceworker")) {
        status = "unknown url";
        event.respondWith(new Response(null, {status: 404, statusText: "Not Found"}));
        return;
    }
    url = event.request.url.substring(0, event.request.url.length - 18).substring(21);
    status = "Fetching " + url;
    event.respondWith(fetch(url).then((r) => {
        response = r;
        status = "Got response for " + event.request.url.substring(0, event.request.url.length - 18) + ", status code is " + response.status;
        return response.arrayBuffer();
    }).then((buffer) => {
        var headers = new Headers(response.headers);
        headers.set("cache-control", "no-cache");
        return new Response(buffer, {headers: headers});
    }));
});
