kopia lustrzana https://github.com/Tldraw/Tldraw
31 wiersze
891 B
TypeScript
31 wiersze
891 B
TypeScript
import { IRequest } from 'itty-router'
|
|
import { getR2KeyForRoom } from '../r2'
|
|
import { Environment } from '../types'
|
|
import { fourOhFour } from '../utils/fourOhFour'
|
|
import { isRoomIdTooLong, roomIdIsTooLong } from '../utils/roomIdIsTooLong'
|
|
|
|
// Get a snapshot of the room at a given point in time
|
|
export async function getRoomHistorySnapshot(
|
|
request: IRequest,
|
|
env: Environment
|
|
): Promise<Response> {
|
|
const roomId = request.params.roomId
|
|
|
|
if (!roomId) return fourOhFour()
|
|
if (isRoomIdTooLong(roomId)) return roomIdIsTooLong()
|
|
|
|
const timestamp = request.params.timestamp
|
|
|
|
const versionCacheBucket = env.ROOMS_HISTORY_EPHEMERAL
|
|
|
|
const result = await versionCacheBucket.get(getR2KeyForRoom(roomId) + '/' + timestamp)
|
|
|
|
if (!result) {
|
|
return new Response('Not found', { status: 404 })
|
|
}
|
|
|
|
return new Response(result.body, {
|
|
headers: { 'content-type': 'application/json' },
|
|
})
|
|
}
|