export default defineEventHandler(async (event) => {
const metadata = await useStorage<{ hash: string }>('assets:server').getItem(`character-parts-metadata.json`)
if (!metadata)
return new Response('Failed to get metadata', { status: 500 })
const ifNoneMatch = getRequestHeader(event, 'if-none-match')
if (ifNoneMatch === metadata.hash) {
setResponseStatus(event, 304)
return null
}
const characterParts = await useStorage<string>('assets:server').getItem(`character-parts.json.br`)
if (!characterParts)
return new Response('Failed to get character parts', { status: 500 })
setHeaders(event, {
'Content-Type': 'application/json',
'Content-Encoding': 'br',
'ETag': metadata.hash,
'Cache-Control': 'no-cache',
})
return characterParts
})
export default defineEventHandler(async (event) => {
const metadata = await useStorage<{ hash: string }>('assets:server').getItem(`character-parts-metadata.json`)
if (!metadata)
return new Response('Failed to get metadata', { status: 500 })
const ifNoneMatch = getRequestHeader(event, 'if-none-match')
if (ifNoneMatch === metadata.hash) {
setResponseStatus(event, 304)
return null
}
const characterParts = await useStorage<string>('assets:server').getItem(`character-parts.json.br`)
if (!characterParts)
return new Response('Failed to get character parts', { status: 500 })
setHeaders(event, {
'Content-Type': 'application/json',
'Content-Encoding': 'br',
'ETag': metadata.hash,
'Cache-Control': 'no-cache',
})
return characterParts
})