70 lines
1.8 KiB
JavaScript
70 lines
1.8 KiB
JavaScript
// @ts-nocheck
|
|
|
|
self.addEventListener('fetch', (event) => {
|
|
const url = new URL(event.request.url)
|
|
const path = url.pathname.split('/')
|
|
if(path[1] === 'sw'){
|
|
try {
|
|
switch (path[2]){
|
|
case "check":{
|
|
event.respondWith(checkCache(url))
|
|
break
|
|
}
|
|
case "img": {
|
|
event.respondWith(getImg(url))
|
|
break
|
|
}
|
|
case "register": {
|
|
event.respondWith(registerCache(url, event.request.arrayBuffer()))
|
|
break
|
|
}
|
|
case "init":{
|
|
event.respondWith(new Response("true"))
|
|
}
|
|
default: {
|
|
event.respondWith(new Response(
|
|
path[2]
|
|
))
|
|
}
|
|
}
|
|
} catch (error) {
|
|
event.respondWith(new Response(`${error}`))
|
|
}
|
|
}
|
|
})
|
|
|
|
|
|
async function checkCache(url){
|
|
const cache = await caches.open('risuCache')
|
|
|
|
return new Response(JSON.stringify({
|
|
"able": !!(await cache.match(url))
|
|
}))
|
|
}
|
|
|
|
async function getImg(url){
|
|
const cache = await caches.open('risuCache')
|
|
return await cache.match(url)
|
|
}
|
|
|
|
async function check(){
|
|
|
|
}
|
|
|
|
async function registerCache(urlr, buffer){
|
|
const cache = await caches.open('risuCache')
|
|
const url = new URL(urlr)
|
|
let path = url.pathname.split('/')
|
|
path[2] = 'img'
|
|
url.pathname = path.join('/')
|
|
const buf = new Uint8Array(await buffer)
|
|
await cache.put(url, new Response(buf, {
|
|
headers: {
|
|
"cache-control": "max-age=604800",
|
|
"content-type": "image/png"
|
|
}
|
|
}))
|
|
return new Response(JSON.stringify({
|
|
"done": true
|
|
}))
|
|
} |