diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2018-02-25 15:46:33 +0100 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2018-02-25 15:46:33 +0100 |
commit | f6d405ced3e9330195109f7c0cef1d40863b1dd0 (patch) | |
tree | 473204f94a5305530412bc2da9fb7c12f67f6394 /swayback/static/sw.js | |
download | swayback-f6d405ced3e9330195109f7c0cef1d40863b1dd0.tar.gz swayback-f6d405ced3e9330195109f7c0cef1d40863b1dd0.tar.bz2 swayback-f6d405ced3e9330195109f7c0cef1d40863b1dd0.zip |
Initial import
Diffstat (limited to 'swayback/static/sw.js')
-rw-r--r-- | swayback/static/sw.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/swayback/static/sw.js b/swayback/static/sw.js new file mode 100644 index 0000000..f3a63db --- /dev/null +++ b/swayback/static/sw.js @@ -0,0 +1,39 @@ +self.addEventListener('install', function(event) { + console.log ('installed service worker', event); + self.skipWaiting(); +}); +/* load stuff through service worker immediately? XXX: only debugging? */ +self.addEventListener('activate', event => { + event.waitUntil(clients.claim()); +}); + +self.addEventListener('fetch', function(event) { + console.log ('fetch event', event.request.url, event); + let url = new URL (event.request.url); + url.protocol = 'https:'; + url.port = 443; + url.hash = ''; + if (url.hostname.endsWith ('.swayback.localhost')) { + url.hostname = url.hostname.slice (0, url.hostname.length-'.swayback.localhost'.length); + } + console.log ('orig url', url); + let body = new FormData (); + body.append ('url', url); + body.append ('method', event.request.method); + let req = new Request ('http://swayback.localhost:5000/raw', {method: 'POST', body: body}); + + event.respondWith ( + fetch(req) + .then(function (response) { + // response may be used only once + // we need to save clone to put one copy in cache + // and serve second one + let responseClone = response.clone(); + console.log ('got resp', responseClone); + return response; + }) + .catch (function () { + console.log ('nope'); + }) + ); +}); |