[clsi-cache] base64 encode X-All-Files header if needed (#25579)

* [clsi-cache] base64 encode X-All-Files header if needed

* [clsi-cache] add explicit error check

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: bd3b6381b68398aac4a07e48cd69e6aa97e94f18
This commit is contained in:
Jakob Ackermann
2025-05-13 13:54:07 +01:00
committed by Copybot
parent 3d0585bc89
commit ed16bd4410

View File

@@ -145,6 +145,10 @@ async function getRedirectWithFallback(
} = await fetchRedirectWithResponse(u, {
signal,
})
let allFilesRaw = headers.get('X-All-Files')
if (!allFilesRaw.startsWith('[')) {
allFilesRaw = Buffer.from(allFilesRaw, 'base64url').toString()
}
// Success, return the cache entry.
return {
location,
@@ -152,7 +156,7 @@ async function getRedirectWithFallback(
shard: headers.get('X-Shard') || 'cache',
lastModified: new Date(headers.get('X-Last-Modified')),
size: parseInt(headers.get('X-Content-Length'), 10),
allFiles: JSON.parse(headers.get('X-All-Files')),
allFiles: JSON.parse(allFilesRaw),
}
} catch (err) {
if (err instanceof RequestFailedError && err.response.status === 404) {